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

Jamil Chade

Pandemia é maior desafio desde Segunda Guerra, alerta ONU

09.jan.2020 - Debate no Conselho de Segurança da ONU - Xinhua/Li Muzi
09.jan.2020 - Debate no Conselho de Segurança da ONU Imagem: Xinhua/Li Muzi

Colunista do UOL

01/04/2020 05h45

Receba os novos posts desta coluna no seu e-mail

Email inválido

A pandemia do coronavíus é a crise mais desafiadora que o mundo enfrenta desde a Segunda Guerra Mundial e poderá gerar uma recessão inédita nos últimos 75 anos. O alerta foi lançado pelo secretário-geral da ONU, Antonio Guterres.

Algumas projeções indicam que o mundo poderá contar com 1 milhão de casos confirmados até o fim de semana. Mas o temor do chefe da diplomacia das Nações Unidas é de que tal crise aumente a "instabilidade, a agitação e o conflito" no mundo.

Seu recado foi dado enquanto lançava um informe sobre os impactos socioeconômicos da pandemia. O temor das entidades internacionais é de que, diante da crise, a pobreza sofra um salto significativo nos próximos meses. Apenas na Ásia, o Banco Mundial estima que 11 milhões de pessoas poderão ser jogadas para baixo da linha da miséria.

"Estamos enfrentando uma crise de saúde global diferente de qualquer outra nos 75 anos de história das Nações Unidas - uma crise que está matando pessoas, espalhando o sofrimento humano e acabando com a vida das pessoas", disse o relatório da ONU.

Metas de redução de problemas sociais poderão ter de ser abandonadas e a crise precisará que governos coloquem mais de 10% do PIB global para o resgate de populações e economias inteiras.

"Mas isto é muito mais do que uma crise de saúde. É uma crise humana". A doença do coronavírus está atacando as sociedades em seu cerne", apontou.

Com 25 milhões de desempregados extras, perda de US$ 3,4 trilhões na renda do trabalhador e queda brutal nos investimentos, a ONU insiste que chegou o momento de os governos reagirem. Para Guterres, a resposta global precisará ser muito mais forte. Mas isso apenas ocorrerá "se todos se juntarem e se esquecermos os jogos políticos e compreendermos que é a humanidade que está em jogo".

Sua avaliação é de que os governos estão "muito longe de onde precisamos estar para combater eficazmente o COVID-19 em todo o mundo e ser capazes de enfrentar os impactos negativos sobre a economia global e as sociedades globais".

Países não seguem OMS

Guterres lamentou que muitos países continuam desrespeitando as diretrizes da OMS e que, cada qual, busca sua estratégia para lidar com a pandemia.

Além disso, o Conselho de Segurança da ONU está em um ime, diante da disputa política entre governos.

Segundo ele, os pacotes de ajuda anunciados durante o encontro do G-20 não garantem que os países mais pobres recebam os recursos necessários para lidar com a nova realidade. Para a ONU, um resgate de US$ 2,5 trilhões serão exigidos para as economias emergentes, além do perdão de dívidas e até mesmo uma espécie de Plano Marshall para reconstruir esses países.

"Estamos longe de ter um pacote global para ajudar o mundo em desenvolvimento a criar condições tanto para suprimir a doença como para enfrentar as consequências dramáticas em suas populações, nas pessoas que perderam seus empregos, nas pequenas empresas que estão operando e correm o risco de desaparecer, naquelas que vivem com a economia informal que agora não têm nenhuma chance de sobreviver", disse Guterres.