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

Ibama e governo de PE divergem sobre efetividade de boias para conter óleo

Boias foram utilizadas em praias do Espírito Santo, em 2015, para tentar conter a lama após desastre de Mariana-MG - Gabriel Lordello/Mosaico Imagem/UOL
Boias foram utilizadas em praias do Espírito Santo, em 2015, para tentar conter a lama após desastre de Mariana-MG Imagem: Gabriel Lordello/Mosaico Imagem/UOL

Isabela Palhares

São Paulo

21/10/2019 12h23

O uso de boias para conter a contaminação das praias de Pernambuco pelo óleo que poluiu o litoral do Nordeste provocou uma divergência entre o governo estadual e o Ibama. Olivaldi Azevedo, diretor de proteção ambiental do órgão federal, disse que as boias são ineficientes para conter o avanço da mancha e que o governo federal busca alguma "tecnologia diferente" para lidar com a situação.

A força da maré fez manchas de óleo voltarem a aparecer no litoral pernambucano nos últimos dias. Mais de 20 toneladas do produto, que se espalhou desde o Maranhão até a Bahia, já foram retiradas das praias de Pernambuco, segundo a Secretaria Estadual de Meio Ambiente e Sustentabilidade.

Há pelo menos dez dias, o governo federal enfrenta um imbróglio judicial para fornecer e instalar as boias de contenção. O Ministério Público Federal (MPF) ajuizou ação para que a União fizesse a proteção.

"Tinha uma liminar para colocarmos as barreiras em 24 horas. Colocamos e mostramos que são ineficientes. Soaria como irresponsabilidade do órgão ambiental em não se empenhar em colocá-las, mas na maioria dos locais elas não têm efeito positivo nenhum", disse Azevedo durante entrevista coletiva neste domingo, 20.

José Bertotti, secretário de Meio Ambiente de Pernambuco, discordou da afirmação de Azevedo e defendeu que o governo federal forneça as boias de contenção. "Se as barreiras não são 100% eficientes, elas podem ao menos minorar o problema. Vamos continuar perseguindo a colocação das boias, porque, se elas não conseguem conter todo o óleo, ao menos reduzem a quantidade de resíduo que chega às praias. Queremos que sejam colocadas em todas as portas de estuário".

Além de cobrar do governo federal recursos ou o envio das barreiras, Bertotti também exigiu que a União envie equipamentos de proteção individual (EPI) para quem está fazendo a limpeza nas praias e para o recolhimento e descarte adequado dos resíduos. "A Praia de Carneiros está sem barreira, mas redes de pesca que foram colocadas para evitar que esse óleo volte a chegar à praia que foi limpa em menos de três horas por 200 pessoas. Até agora não recebemos nada do governo federal, é tudo recursos do Estado", disse.