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

Dá para evitar haters: como "blindar" Instagram e Facebook contra bullying

Funcionalidades como filtro de comentários e denúncia de hashtags podem blindar redes sociais - iStock Images
Funcionalidades como filtro de comentários e denúncia de hashtags podem blindar redes sociais Imagem: iStock Images

Natália Eiras

Da Universa

07/04/2019 04h00

Muito comum entre adolescentes e jovens adultos, o bullying, tipo de agressão que pode ser o estopim de ataques como a de uma escola pública em Suzano (SP), pode começar nas salas de aula ou no pátio do colégio, mas ele encontra um terreno fértil no meio digital, onde comentários e mensagens anônimas ofensivas são facilmente enviados. Por isso, empresas de tecnologia e redes sociais têm muito trabalho a fazer para prevenir e monitorar situações em que uma pessoa pode estar sofrendo bullying.

Em seu mais recente Relatório de Transparência dos Padrões de Comunidades do Facebook, divulgado em novembro do ano ado, a rede social detectou, no último trimestre de 2018, 2,1 milhões de conteúdos que violaram suas políticas de bullying e assédio moral —15% das publicações foram derrubadas antes de serem denunciadas. "São casos difíceis de serem analisados porque levam em conta aspectos culturais de cada lugar, por isso trabalhamos na prevenção", fala Daniele Kleiner, diretora de Bem-Estar do Facebook, à Universa. Ela pontua que a rede social derrubou publicações feitas pelos autores do ataque de Suzano, depois da tragédia, mas está trabalhando para evitar que posts "glamourizando" o caso sejam publicados.

O Facebook e o Instagram, que atraem juntos mais de 3 bilhões de usuários, lançaram em parceria com a ONG SaferNet e com a Unicef a campanha "Acabar com o Bullying #édaminhaconta". A ação acontece neste domingo (7), o Dia Nacional de Combate ao Bullying e à Violência na Escola. A ideia da campanha surgiu do senso de responsabilidade das redes sociais pelos casos de assédio moral. "Todos temos que nos posicionar e enfrentar este problema", diz Daniele.

Além da campanha, as redes sociais têm algumas funcionalidades que podem ser aliadas de jovens e pais de adolescentes para "blindar" seus perfis contra o bullying. Veja:

1- Filtro de comentários ofensivos

O Instagram tem uma funcionalidade pouco conhecida em que um usuário pode cadastrar palavras-chave para filtrar comentários ofensivos em sua conta na redes social. Ele está disponível para qualquer tipo de conta, não importando o número de seguidores. "O filtro já vem ativado automaticamente para palavras consideradas sensíveis pelos analistas do Instagram", fala Natalia Paiva, gerente de políticas públicas do Instagram na América Latina. "Porém, é possível fazer um versão personalizada, em que o usuário coloca palavras, hashtags e emojis que ele não gostaria de ver nos comentários de suas publicações." De acordo com as diretrizes de comunidade do Instagram e do Facebook, pessoas a partir dos 13 anos podem ter perfis nas redes sociais. Caso pais de adolescentes queiram manter a segurança de seus filhos na internet, eles podem usar a funcionalidade para não expor os jovens a comentários ofensivos. "Qualquer termo pode ser colocado como palavra-chave no filtro", afirma Natalia.

2- Monitoramento e denúncia de hashtags sensíveis

No caso do Instagram, no entanto, há ainda o monitoramento por machine learning de palavras-chaves consideradas sensíveis. "Você pode, inclusive, denunciar uma hashtag que pode estar sendo usada para agredir uma pessoa", diz Natalia Paiva. "E caso uma pessoa busque um termo sensível, como ansiedade ou relacionada a suicídio, o Instagram manda um alerta oferecendo ajuda e o contato do CVV (Centro de Valorização da Vida)."

3- Denúncia de bullying

Publicações, comentários e mensagens diretas considerados ofensivos podem ser denunciadas tanto no Facebook como no Instagram. Em ambos os sites, o botão, no entanto, fica "escondido" na função de denunciar e dar sobre uma publicação. As duas redes sociais verificam os posts reportados em até 24 horas. O relatório é feito por um time global de 30 mil pessoas contratadas para analisar as denúncias. "Como é necessário entender o contexto de termos usados em um post de bullying, os analistas precisam falar várias línguas diferentes e entender a cultura dos lugares", diz Daniele Kleiner. "Há também o trabalho proativo com uso de tecnologia", afirma a gerente de bem-estar da rede social, que também tem uma central de prevenção ao bullying. Caso um mesmo perfil receba muitas denúncias, ele pode ser bloqueado e banido das redes sociais.