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

Lattes está há 9 dias fora do ar; CNPq diz realizar 'série de testes' no sistema

Sede da CNPq; plataforma Lattes e Carlos Chagas estavam previstas para voltar ao ar ainda hoje - Marcelo Gondim e Carlos Cruz/Divulgação CNPq
Sede da CNPq; plataforma Lattes e Carlos Chagas estavam previstas para voltar ao ar ainda hoje Imagem: Marcelo Gondim e Carlos Cruz/Divulgação CNPq

02/08/2021 23h25

Os sistemas do Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), entre os quais as plataformas Lattes e Carlos Chagas, seguem fora do ar há nove dias. O "apagão" gera preocupação em cientistas em todo o país, que temem perda de dados e atrasos na liberação de auxílios. O CNPq, por outro lado, afirma que há backup das informações e que os pagamentos dos bolsistas estão garantidos.

Em nota publicada hoje, o conselho informou que a verificação completa no equipamento que apresentou os problemas responsáveis pelo apagão dos sistemas continua em andamento. Anteriormente, havia uma previsão de retomada do funcionamento ainda hoje. "Essa verificação envolve uma série de testes, que foram realizados ao longo de todo final de semana, com pontuais instabilidades que estão sendo ajustadas para restabelecer a capacidade completa do storage", disse o CNPq.

O órgão ressaltou ainda que, para garantir a segurança, a estabilidade e o bom funcionamento do equipamento, optou por estender os testes até ser possível oferecer um cenário seguro para a disponibilização dos sistemas. Não especificou, porém, qualquer previsão de conclusão desses testes.

"Os novos calendários serão divulgados assim que restabelecermos os os", afirmou o CNPq, destacando, além disso, que os pagamentos dos bolsistas estão garantidos. "Reforçamos que os dados estão resguardados tanto no equipamento em uso quanto no novo equipamento, como backup."

Ligado ao Ministério da Ciência e Tecnologia, o CNPq é uma entidade responsável pelo fomento à pesquisa e pelo pagamento de bolsas a cientistas brasileiros. Cerca de 80 mil pesquisadores brasileiros são financiados com recursos do CNPq. Os sistemas do conselho dão o aos currículos Lattes de milhares de pesquisadores, documentos usados para concorrer a bolsas e pleitear recursos para projetos, e são utilizados para gerenciar uma plataforma para pagamento de bolsas aos cientistas, a Carlos Chagas.

Previsão era de que os sistemas voltariam hoje

O Ministério da Ciência, Tecnologia e Inovações (MCTI) informou na semana ada que os sistemas do Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) seriam restabelecidos nesta segunda-feira, quando completam nove dias fora do ar. A pasta destacou na ocasião que o backup de todos os dados da Plataforma Lattes já foi feito para um novo equipamento, "garantindo a integridade de todas as informações". Pesquisadores têm relatado problemas no o aos sistemas desde o último sábado (24).