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

Animal mais resistente do mundo se transforma em vidro para sobreviver

Eye Of Science/SPL
Imagem: Eye Of Science/SPL

Do UOL, em São Paulo

17/03/2017 11h28

Chamado de urso d’água e conhecido por ser quase imortal, o tardigrado (Ramazzottius variornatus) vive em diferentes ambientes aquáticos, mas também pode sobreviver a períodos de seca. Agora os cientistas sabem o motivo.

O animal microscópico, de 1,5 milímetro de comprimento é resistente a água fervente e quase ao zero absoluto, ele também pode viver na terra e até ficar adormecido por anos quando desidratado. De tão especial, se tornou alvo de diversos estudos, incluindo como sobreviver a anos de desidratação completa.

Para realizar esse ato notável, o animal usa proteínas específicas chamadas de TDPs (proteínas intrinsecamente desordenadas). Quando existe água em volta, as proteínas são gelatinosas, mas quando eles estão secos elas se transformam em uma espécie de casulo de vidro.

Até o momento, os pesquisadores acreditavam que o tardigrado usava um tipo de açúcar chamado trealose, para aumentar a sua capacidade de tolerar dessecação.

Trealose é encontrado em outros organismos com esta habilidade, incluindo o camarão da salmoura e nematoides (um tipo de verme). Mas estudos bioquímicos mostraram que os tardigrados tinham níveis muito baixos desse açúcar, sugerindo que usam um mecanismo diferente.

Para determinar que se tratavam de TDPs, os cientistas da Universidade da Carolina do Norte, realizaram um monitoramento genético dos animais enquanto secos e perceberam que ao bloquear a atividade desses genes os tardigrados morriam de desidratação.

Além disso, a pesquisa, publicada na revista Molecular Cell, mostrou que leveduras de bactérias artificialmente equipadas com os genes também poderiam sobreviver à desidratação, o que sugere que essa capacidade pode ser transferida para outras culturas.

Estudos anteriores já mostraram que essa proteína inoculada em células humanas diminuiu os danos causados por radiação por raios-x e aumenta a tolerância contra radiação.

A equipe agora está investigando se outros organismos, como sementes de plantas, dependem dessas proteínas para sobreviver à seca.

Os pesquisadores esperam que a descoberta possa gerar aplicações práticas como uma forma de armazenar vacinas e produtos farmacêuticos à temperatura ambiente, desidratando-os e acrescentando a proteína que vira vidro em vez de precisar refrigerá-los constantemente.