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

Telescópio Hubble capta foto de cair o queixo da galáxia "Olho da Serpente"

Cleberson Alcântara

Colaboração para Tilt

18/09/2020 12h25

Sem tempo, irmão

  • ESA divulgou nesta semana foto tirada pelo telescópio Hubble
  • Galáxia ganhou apelido por sua similaridade com o olho de uma cobra
  • Buraco negro em seu centro tem massa milhões de vezes superior ao nosso Sol
  • Brilho azul indica que há estrelas em formação na galáxia

O famoso telescópio espacial Hubble registrou uma imagem espetacular da galáxia NGC 2835, que está a 35 milhões de anos-luz da Terra. Por conta do seu formato, a NGC 2835 ganhou um nome mais ível ao público leigo: "olho de serpente".

hubble - ESA/Hubble & NASA, J. Lee, and t - ESA/Hubble & NASA, J. Lee, and t
Foto captada pelo Hubble mostra detalhes da galáxia conhecida como "Olho da Serpente"
Imagem: ESA/Hubble & NASA, J. Lee, and t

A imagem foi divulgada essa semana pelo site da European Space Agency (ESA) e mostra o motivo do apelido. A galáxia é uma espiral, assim como a nossa Via Láctea, e seu centro brilhante lembra os olhos de uma cobra.

Apesar do brilho, o centro da galáxia conta um imenso buraco negro. De acordo com a ESA, sua massa é milhões de vezes maior que o do Sol. Os brilhos azuis que estão ao redor do centro são emissões de luz quase ultravioleta. Eles indicam que estrelas estão em processo de formação ou foram formadas recentemente na galáxia.

Mesmo com a distância, o "Olho de Serpente", que tem metade da largura da Via Láctea, está próximo da constelação de Hydra, a maior constelação que nós conseguimos observar aqui da Terra por meio de um telescópio comum.

O Hubble foi lançado ao espaço em abril de 1990. Nesses 30 anos de serviços prestados, ele já ajudou os astrônomos a entender como nasce uma estrela, o que são os buracos negros e a qual a idade do universo.