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

Twitter lucra com exploração de racismo e misoginia, diz Djamila Ribeiro

Em entrevista à Vogue Brasil, Djamila Ribeiro disse que "é preciso questionar" o Twitter pela "exploração econômica do racismo" - Lucas Lima/UOL Estilo
Em entrevista à Vogue Brasil, Djamila Ribeiro disse que "é preciso questionar" o Twitter pela "exploração econômica do racismo" Imagem: Lucas Lima/UOL Estilo

De Tilt, em São Paulo

14/08/2020 17h51

A filósofa Djamila Ribeiro disse em entrevista concedida ontem ao perfil da Vogue Brasil no Instagram que espera conseguir que, ao entrar na Justiça contra o Twitter, a rede social "dê dinheiro para um fundo de combate à discriminação" contra pessoas negras, sobretudo mulheres.

"Queremos que o Twitter dê dinheiro para um fundo de combate à discriminação para que as entidades negras, sobretudo de mulheres negras, possam ser ressarcidas de todos esses assassinatos de reputação [que ocorrem na rede social]", disse a escritora.

"O Twitter é uma empresa bilionária. É preciso questionar essa empresa pela exploração econômica do racismo", concluiu a filósofa.

Ao UOL, o Twitter disse que "tem regras que determinam os conteúdos e comportamentos permitidos na plataforma".

"Violações a essas regras, que seguem em constante evolução para fazer com que as pessoas se sintam mais seguras ao usar a plataforma, estão sujeitas às medidas cabíveis", afirmou.

Djamila citou a tese de doutorado de um homem negro chamado Luis Silvério que, segundo ela, "mostra que 81% dos discursos de ódio no Twitter são direcionados às mulheres negras", para argumentar sua ida à Justiça.

"Toda vez em que vamos parar no trending topics as empresas vão lá e anunciam. Eles estão lucrando com a exploração do racismo e da misoginia", argumentou.

Ameaça contra filha e representação no MP

No fim de julho, Djamila disse que entraria com uma representação no Ministério Público contra o Twitter por, segundo ela, a rede social não punir da maneira correta usuários que reproduzem discursos de ódio e racismo.

"Essas plataformas precisam encontrar políticas melhores e punir essas pessoas que reproduzem discurso de ódio para que isso não reverbere na nossa vida dessa maneira", afirmou a filósofa em entrevista ao programa "Encontro com Fátima Bernardes", da TV Globo.

Dias antes, em entrevista ao "Jornal das 16h", da GloboNews, a escritora falou sobre o fato que a motivou a representar contra o Twitter na Justiça: uma ameaça recebida por sua filha, de apenas 15 anos.

"Como eu sou ativista, eu recebo muita coisa, já estou acostumada. Mas aí aram de todos os limites. No domingo, mandaram [ameaças] para o meu celular e para o celular da minha filha, aí eu achei a gota d'água", contou a filósofa ao canal.

Após a ameaça recebida por sua filha, Djamila Ribeiro registrou um boletim de ocorrência na Decradi (Delegacia de Crimes Raciais e Delitos de Intolerância) do DHPP (Departamento de Homicídios e Proteção à Pessoa) de São Paulo.