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

Leonardo Sakamoto

Brasil tolera apagão no Amapá, como tolera morte de jovem negro e pobre

Colunista do UOL

12/11/2020 19h17

Receba os novos posts desta coluna no seu e-mail

Email inválido

Imagine se a energia elétrica acabasse, de repente, nos Jardins e no Leblon, bairros nobres de São Paulo e do Rio, deixando a população não apenas sem luz, mas também sem abastecimento de água por vários dias.

Alimentos estragassem na geladeira e nos supermercados pela falta de refrigeração, semáforos deixassem de funcionar criando mais mortes no trânsito, o comércio parasse de aceitar cartões de débito e crédito pela falta de energia, restassem poucos caixas eletrônicos funcionando e, o pesadelo para muita gente, não houvesse mais wi-fi.

Imagine se os moradores desses bairros tivessem que carregar latas d'água na cabeça. E entrassem em desespero e ficassem vagando pelas ruas sem informação ou perspectivas.

Quanto tempo você acha que levaria para o problema ser resolvido?

Claro que a situação é diferente, pois o sistema elétrico nas duas capitais não depende apenas de um linhão, como em Macapá.

Mas hipoteticamente falando, se isso ocorresse em bairros nobres de megacidades, neste momento as cabeças dos governantes - dos prefeitos ao presidente - estariam na caçapa do impeachment se o poder público não resolvesse a questão imediatamente.

Sim, na hora da emergência, é o Estado que é convocado para arrumar o que as prestadoras de serviços públicos privadas deveriam ter feito.

Mas a comparação é boba, pois nem é tão hipotética. Se jovens brancos e ricos do Morumbi ou da Barra da Tijuca fossem mortos por policiais, traficantes e milicianos na mesma frequência que jovens negros e pobres são assassinados diariamente nas periferias, a elite governante do país já teria encontrado uma forma para que isso não acontecesse.

No Amapá, onde o apagão atingiu 90% da população do estado, o retorno da energia e da água demorou e, quando veio, foi na forma de rodízio. Mas moradores das áreas mais pobres reclamam que nem o rodízio se dignou a aparecer por lá.

A Justiça determinou que o problema fosse solucionado num prazo curto, mas o ministro das Minas e Energia disse que não ia rolar. Essa resposta é aceitável porque é no Amapá.

O problema apenas ganhou a preocupação nacional através das redes sociais, pela campanha #SOSAmapa - o que, convenhamos, é uma suprema humilhação para todos os brasileiros. Quase um lembrete do tipo: ei, Brasil, a gente existe.

Praticando um de seus esportes preferidos, o arremesso de responsabilidades, o presidente da República disse, no dia 9, que a energia no Amapá "não é de responsabilidade do Estado nem da União". Mas a agência que regula o setor elétrico é, e o próprio Bolsonaro já disse que ela tem autonomia, mas não é "soberana". Isso sem falar na ajuda insuficiente e atrasada para mitigar a situação.

Não desejo para nenhum lugar do Brasil o que está acontecendo com o Amapá. Mas o Amapá lembra que cidadania no Brasil é produto chique, não é para qualquer um.

E que estamos sem governo.