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

Sucesso! Em teste, cápsula da SpaceX escapa de falha e explosão de foguete

Cápsula Crew Dragon abortou decolagem e fugiu da explosão do foguete Falcon 9 - JOE RIMKUS JR/REUTERS
Cápsula Crew Dragon abortou decolagem e fugiu da explosão do foguete Falcon 9 Imagem: JOE RIMKUS JR/REUTERS

Rodrigo Trindade

De Tilt, em São Paulo

19/01/2020 13h40

A SpaceX concluiu mais um teste com o foguete Falcon 9 e a cápsula de ageiros Crew Dragon na preparação para levar astronautas para a ISS (Estação Espacial Internacional). Na manhã deste domingo (19), a empresa de Elon Musk explodiu, intencionalmente, uma unidade do foguete para ver se o mecanismo de ejeção de emergência da cápsula funciona corretamente.

Todo o evento foi transmitido pela internet e mostrou o procedimento completo: lançamento do foguete, uma pane na atmosfera, a ejeção de emergência da cápsula e a explosão do foguete. Na sequência, a cápsula se desconectou de mais um componente e deu início ao processo de descida, ajudado por quatro paraquedas acionados para desacelerar o objeto, que caiu no Oceano Atlântico.

O processo levou, ao todo, menos de 15 minutos. Segundo a transmissão oficial da Nasa, o teste aparentou ser um sucesso, mas isso será confirmado somente mais tarde, após a recuperação da cápsula no oceano.

"Parabéns à Nasa e ao time da SpaceX pelo sucesso no teste de aborto durante voo! Esse teste crítico nos coloca perto de lançar astronautas americanos em foguetes americanos do solo americano. Operação de recuperação da espaçonave está em andamento", declarou Jim Bridestine, da Nasa, otimista com o que foi presenciado.

O teste desse domingo mostrou os propulsores Super Draco funcionam para separar a cápsula Crew Dragon, com capacidade para sentar sete astronautas, do foguete Falcon 9. Resta saber o impacto sentido pelos dois bonecos colocados dentro do veículo, equipados com sensores que irão calcular o que o corpo humano aria neste processo.

Durante o lançamento, a separação e o pouso, ouviu-se muita celebração na sede da SpaceX em Hawthorne, na Califórnia. Eles acompanharam, da costa oeste americana, o lançamento realizado no Cabo Canaveral, localizado na Flórida, do outro lado do país.

O experimento estava planejado para meados de 2019, mas sofreu atrasos porque um modelo prévio da cápsula explodiu em abril em um experimento com seus propulsores. A SpaceX identificou uma falha em uma válvula como causa do acidente e corrigiu o defeito.

Este é tido como o último teste qualitativo antes de foguete e cápsula da SpaceX serem considerados aptos a levar astronautas americanos para a ISS. A relevância disso está no fato de os Estados Unidos dependerem, desde 2011, dos foguetes russos Soyuz para irem à órbita da Terra.

A Nasa pagou, em setembro de 2014, US$ 2,6 bilhões à SpaceX para que ela desenvolvesse uma cápsula americana capaz de levar astronautas à ISS, devolvendo ao país a autonomia que ele teve até o término do programa de ônibus espaciais. A expectativa inicial era que o projeto fosse concluído em 2017.

Assista à íntegra do teste

SIGA TILT NAS REDES SOCIAIS