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

Luciana Bugni

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Tirullipa fora da Farofa: violência é diferente de brincadeira de mau gosto

Tirullipa perde perdão após expulsão da Farofa da Gkay por assédio - Divulgação
Tirullipa perde perdão após expulsão da Farofa da Gkay por assédio Imagem: Divulgação

Colunista do UOL

07/12/2022 11h44

Receba os novos posts desta coluna no seu e-mail

Email inválido

Como é que a gente explica para um homem a diferença entre brincadeira e violência? Tirullipa achou que estava brincado na Farofa da Gkay e puxou a cordinha de biquínis de várias influencers que estavam em uma banheira — um tipo de releitura da banheira do Gugu dos anos 90. Ele achou que seria engraçado deixar as moças nuas. Elas não acharam.

Ele foi expulso pela anfitriã, sua amiga Gkay, por ter cometido assédio. Nem assim o humorista entendeu: foi às redes sociais pedir desculpas pelo que chamou de "brincadeira de mau gosto".

Desde a infância, meninos violentam outros meninos com tentativas de desnudá-los. Acontecia na quinta série, você lembra? Abaixar a calça do outro era o conceito máximo do bufão em sala de aula. A vítima, entre constrangida e raivosa, se apressava para levantar a calça e se cobrir, antes de correr enfurecida atrás do agressor. Há quem diga que era engraçado. Eu só via violência e vergonha. Na vida adulta, desnudar o outro à força é assédio. É vexatório para o agressor.

A atitude de Tirullipa resume uma série de assédios que estamos acostumadas a ver. Um grupo de mulheres se esfregando de biquíni está pedindo para ter seus trajes de banho arrancados à força? Não.

O sexo é livre, a bagunça parece generalizada, a pegação deixa tudo com cara de terra sem lei... mas mesmo nesse contexto, só é possível fazer com o outro o que o outro deixa que façam. O nome disso é consentimento.

Tirullipa é um humorista que ainda vive nos moldes do humor dos anos 90, talvez. Viu uma banheira com mulheres seminuas e espuma e achou que estava em algum lugar do ado, no domingo à tarde, na TV aberta. Numa nem tão fictícia realidade paralela, há 30 anos, eu e outras mulheres enfrentaríamos a violência como fato casual. Teríamos medo de andar de biquíni no dia seguinte. Não hoje. A Gkay do presente faz o difícil papel de expulsar um amigo de sua própria festa e coloca todo mundo em alerta. Se esfregar é uma delícia, desde que eu deixe você se esfregar em mim. Caminhamos.

Você vai poder ver nos comentários desse texto homens raivosos contestando o irracional: "então mulher pode fazer putaria quando quer e o homem não pode tirar vantagem disso?" A resposta é: isso mesmo. A putaria só é vantajosa quando é legal para todo mundo. Taí um modo de vida democrático de verdade. O resto é violência.

Você pode discordar de mim no Instagram.