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

Boa notícia! Nasa descobre solução para falha do telescópio Hubble

Telescópio Hubble - NASA/Divulgação
Telescópio Hubble Imagem: NASA/Divulgação

Letícia Naísa

De Tilt, em São Paulo

15/07/2021 15h34Atualizada em 15/07/2021 16h43

Levou mais de um mês, mas a Nasa, agência espacial norte-americana, descobriu a cura para um defeito técnico no telescópio Hubble, que o deixou inoperante. O problema aconteceu na Unidade de Controle de Energia (PCU) do dispositivo.

A peça fica localizada no computador de carga útil do telescópio, em órbita desde 1990, que garante que cada pedaço do hardware receba suprimento constante de energia. A PCU contém um regulador de energia que fornece 5 volts constantes de eletricidade para o computador de carga útil e sua memória.

O que aconteceu, segundo a Nasa, foi que o nível de tensão do regulador ficou muito baixo, o que significa que a peça pode ter se degradado com o tempo. Sem a carga de energia necessária para operar, o computador recebeu instruções para interromper suas operações. A falha foi identificada no dia 13 de junho.

"Uma série de testes, que incluíram a tentativa de reiniciar e reconfigurar o computador e o computador de backup, não tiveram sucesso, mas as informações obtidas por meio dessas atividades permitiu à equipe do Hubble determinar que a possível causa do problema foi a PCU", descreveu a Nasa em sua página oficial.

Operação resgate

A troca da peça começará a ser feita nesta quinta-feira (15). Em alguns dias, o velho telescópio estará como novo e poderá retornar às atividades, segundo as expectativas da agência.

Em 2008, Nasa realizou uma mudança semelhante nos equipamentos do Hubble, quando outra parte do computador de carga útil falhou. Uma missão de serviço em 2009 substituiu toda a unidade que contém o computador com peças dos anos 1980.

Na época, cinco astronautas viajaram por 570 km de altitude para instalar o "novo" computador, baterias e instrumentos científicos.

Resiliência

O telescópio revolucionou a astronomia e permitiu à humanidade enxergar alguns dos mistérios do universo, como buracos negros, o Sistema Solar, a Via Láctea e outras galáxias distantes.

O Hubble já realizou mais de 1,5 milhões de observações do universo. Seus dados já renderam mais de 18 mil artigos científicos pelo mundo.

Seu tempo de vida em órbita já ultraou muito as expectativas dos cientistas. Nos últimos anos, ele superou uma série de falhas técnicas. Entre 1993 e 2009, a Nasa enviou cinco missões de resgate até o telescópio e fez uma série de reparos à distância.

Em outubro deste ano, a agência espacial pretende lançar um companheiro para o "velhinho", o Telescópio Espacial James Webb, que continuará expandindo o legado do Hubble.