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

Novos tempos? Nunca tinha visto homem pagar por mão-boba ao vivo

BBB 23: Cara de Sapato e MC Guimê são eliminados - Reprodução/Globoplay
BBB 23: Cara de Sapato e MC Guimê são eliminados Imagem: Reprodução/Globoplay

Colunista do UOL

17/03/2023 00h01

Receba os novos posts desta coluna no seu e-mail

Email inválido

Eu tinha dez anos de idade quando senti pela primeira vez a mão de uma homem deslizar pelo meu corpo sem meu consentimento.

Minha feição apavorada diante do rosto de deboche do menino me fez entender, por muitos anos, que de alguma forma a culpa era minha.

Entendi depois de alguns dias que era uma aposta entre meus colegas de sala — provavelmente incentivados pela cultura pornô e algum parente mais velho. A culpa era de fato minha, me explicou um deles, por ter me apoiado na mesa da professora com uma camiseta mais curta do que deveria. Eu tinha dez anos, nenhuma curva no corpo (ou na mente) que delimitasse qualquer sexualização. A camiseta era de fato menor, pois a usava desde o ano anterior. Escola pública, sabe como é. Fui importunada antes de sentir qualquer prazer ou vontade relacionada ao tema. O sentimento me acompanha até hoje.

Mas aprendi a lidar com homens que se acham no direito de percorrer sua mão sobre meu corpo do jeito que podia fazer. Empurrando esses caras, às vezes. Sendo simpática outras tantas vezes, quando se tratava de quem eu julgava amigo. Munindo-me de rodo e pano para limpar a barra de quem errou, como se eu de fato carregasse a culpa por ser simpática demais.

A menina que se apoiou na mesa da professora e foi assediada (nem dá para chamar de importunação, pois foi um assédio invasivo, seguido de humilhação e silenciamento, já que nunca me deram voz). Se tem escola de abuso, com pais, primos e irmãos, não há chance de ter uma escola de defesa feminina quando se tem apenas dez anos no começo dos anos 1990. Nossa balança sempre pende para o lado de lá.

Até essa quinta (16), em que dois caras que poderiam ser meus amigos se comportaram de maneira violenta com uma mulher que acabara de chegar no BBB 23 (Globo). Uma mão nas costas que podia ser inofensiva (mas atinge as nádegas, e nem o rodo e o pano de minha criação machista são capazes de ar), ou um beijo roubado (que teria uma conotação quase pueril, não soubéssemos se tratar de assédio).

Tem algo errado aqui — eu e tantas mulheres sabemos que não é de hoje. Mas o garoto que me sorria debochado tinha certeza da impunidade que de fato deve tê-lo acompanhado por décadas.

Não hoje. O machismo que há em mim, provavelmente forjado pela minha própria sobrevivência, agoniza. Há punição. Sapato e Guimê, caras bacanas, pagam por terem importunado uma garota.

Se fosse hoje, o menino da quarta série talvez não se sentisse tão à vontade para me violentar. E nem todos os outros que vieram depois dele. E nem todas as outras "eu" que só queriam sobreviver socialmente.

Esse fato — dois homens foram eliminados do maior reality show do país — é um grande momento para que, via cultura de massa, a gente mude o comportamento ancestral que aceita como inerente algo que é violência. Que venham os próximos 30 anos. Eu me sinto pronta.

Você pode discordar de mim no Instagram.