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

Lei Geral de Proteção de Dados é adiada para maio de 2021

A Lei Geral de Proteção de Dados entraria em vigor em agosto deste ano - Getty Images/iStockphoto
A Lei Geral de Proteção de Dados entraria em vigor em agosto deste ano Imagem: Getty Images/iStockphoto

Agência Brasil

29/04/2020 22h45

O presidente Jair Bolsonaro editou nesta quarta-feira (29) a Medida Provisória (MP) nº 959 que trata da operacionalização do pagamento do Benefício Emergencial de Preservação do Emprego e da Renda e também prevê o adiamento da Lei nº 13.709 que estabelece a Lei Geral de Proteção de Dados Pessoais (LGPD).

A MP foi publicada em uma edição extra do Diário Oficial da União desta quarta-feira (29). A LGPD deveria entrar em vigor em agosto deste ano e agora a a valer apenas em maio de 2021.

A LGPD disciplina como empresas e entes públicos podem coletar e tratar informações de pessoas, estabelecendo direitos, exigências e procedimentos nesses tipos de atividades. No dia 3 de abril, o Senado havia adiado a entrada em vigor da lei. O tema foi incluído no projeto de lei 1179 de 2020, que flexibiliza a legislação para a manutenção de empregos durante o enfrentamento da pandemia.

Empresas podem rear dados

Segundo a norma, dados pessoais são informações que podem identificar alguém. Dentro do conceito, foi criada uma categoria chamada de "dado sensível", informações sobre origem racial ou étnica, convicções religiosas, opiniões políticas, saúde ou vida sexual. Registros como esses am a ter nível maior de proteção, para evitar formas de discriminação.

Mas quem fica sujeito à lei? Todas as atividades realizadas ou pessoas que estão no Brasil.

A norma valerá para coletas operadas em outro país desde que estejam relacionadas a bens ou serviços ofertados a brasileiros. Mas há exceções, como a obtenção de informações pelo Estado para segurança pública.

Ao coletar um dado, as empresas deverão informar a finalidade. Se o usuário aceitar rear suas informações, como ao concordar com termos e condições de um aplicativo, as companhias am a ter o direito de tratar os dados (respeitada a finalidade específica), desde que em conformidade com a lei.

A Lei previu uma série de obrigações, como a garantia da segurança dessas informações e a notificação do titular em caso de um incidente de segurança. A norma permite a reutilização dos dados por empresas ou órgãos públicos, em caso de "legítimo interesse" desses, embora essa hipótese não tenha sido detalhada, um dos pontos em aberto da norma.

De outro lado, o titular ganhou uma série de direitos. Ele poderá, por exemplo, solicitar os dados que a empresa tem sobre ele, a quem foram reados (em situações como a de reutilização por "legítimo interesse") e para qual finalidade. Caso os registros estejam incorretos, poderá cobrar a correção. Em determinados casos, o titular terá o direito de se opor a um tratamento.

A lei também permitirá a revisão de decisões automatizadas tomadas com base no tratamento de dados (como as notas de crédito ou perfis de consumo).

Rastro digital

Todos os dias, deixamos "rastros" em diversas atividades cotidianas. Quando damos "likes" ou compartilhamos algo em redes sociais, indicamos preferências sobre temas. Ao fazer um cadastro para ar um site ou serviço na internet, fornecemos identificações importantes, como carteira de motorista e endereço.

Ao dar o F após uma compra ou para adquirir descontos, fornecemos ao vendedor nossa identificação e informações sobre o que adquirimos e quanto gastamos. Ao usar a digital para entrar em um prédio, deixamos um registro biométrico fundamental sob responsabilidade de empresas e órgãos que, muitas vezes, são desconhecidos.

Há casos em que a simples presença próxima a dispositivos com câmeras e microfones pode significar a gravação de imagens e conversas. Os rastros das nossas atividades, assim como informações sobre nós (como identidade, F, data de nascimento, gênero, cor, endereço, nome de pai e mãe, entre outros), ao serem coletados e tratados, transformam-se em dados pessoais.

Com a disseminação de tecnologias digitais, informações variadas são transformadas em bits (0s e 1s), reunidas, cruzadas e analisadas em bancos de dados de capacidade crescente e com sistemas cada vez mais complexos, inclusive com alta capacidade de processamento naquilo que ou a ser chamado de inteligência artificial.

*Com a colaboração de Jonas Valente - Repórter da Agência Brasil