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

Experimenta

Nossos repórteres am pelas mais diversas experiências e contam como foi


Experimenta

Dez encontros em uma hora: o que vi e aprendi em um Speed Dating

Fernanda Garcia/Universa
Imagem: Fernanda Garcia/Universa

Camila Brandalise

Da Universa

30/08/2018 04h00

Tenho quatro minutos para conversar com o homem sentado na minha frente. Speed Dating funciona assim: as mulheres ficam sentadas e os pretendentes pulam de mesa em mesa, a cada quatro minutos, para ver se rola um “match”. É quase um Tinder da vida real, mas tem um investimento (as pessoas pagam cerca de R$ 90 para estar lá). E por isso, talvez, um pouco mais de compromisso. 

O homem me diz que é psicólogo e está reclamando das pessoas que perguntam se ele as está analisando enquanto conversam. “Não tem nada a ver. Você é jornalista, certo? E isso não significa que está fazendo uma reportagem agora.”

Veja também

Na verdade, eu estou fazendo uma matéria. Mas não revelo isso nem a ele nem aos outros interlocutores do Speed Dating ao participar do evento na terça-feira ada, dia 21 de agosto. Por isso, apesar de todos usarmos crachás com nosso primeiro nome, não revelarei identidades de ninguém aqui.

Camila no Speed Dating - Talyta Vespa/Universa - Talyta Vespa/Universa
Como os outros participantes, uso um crachá com meu primeiro nome para facilitar o início da conversa
Imagem: Talyta Vespa/Universa

Primeiras impressões

Chego no bar escolhido para o evento - um lugar que vende espetinhos na zona oeste de São Paulo -, espero em uma mesa e uma hora depois sou levada, com as outras mulheres participantes, até o espaço reservado para os "dates".

Na mesa que sento, há uma ficha para anotarmos os nomes dos pretendentes e ao lado marcar “sim”, “talvez” ou “não”, de acordo com meu interesse. Se a gente dá sim ou talvez em alguém que nos der uma das duas respostas também, recebemos um e-mail com o e-mail da pessoa até dois dias depois do evento. Com isso, os “matches” podem entrar em contato uns com os outros, como um Tinder com um pouquinho mais de intimidade.

Me parece divertido. Agora é só esperar sentada os homens chegarem.

Clima de paquera, só que não

Os homens entram um atrás do outro. Me faz lembrar quadros de namoro de programas de auditório. Mas não tem música romântica, em vez disso o que ouço é o hino do Santos: o espaço do Speed Dating foi dividido com um encontro da torcida santista, reunida a poucos metros dali para assistir ao jogo da noite.

Prestes a começar, recebemos papéis com nomes de pontos turísticos, e, os homens, com os das cidades equivalentes. Quando houvesse correspondência, era com aquela mulher que ele sentaria primeiro.

Estou ansiosa, mas não aparece nenhum “Rio de Janeiro" para o meu “Estádio do Maracanã". Com dois homens a menos que o número de garotas, eu fico sem par por duas rodadas.

Começa o revezamento: valendo!

Finalmente o primeiro pretendente aparece na minha frente. Um homem alto, na faixa dos 50 anos, com uma camisa salmão e calça jeans clara. Não me atrai, mas decido tentar, pelo menos, ter uma conversa divertida e saber quem ele é.

Ele me pergunta tanta coisa que não tenho brecha para confirmar se tem mesmo 50. “Idade e altura">var Collection = { "path" : "commons.uol.com.br/monaco/export/api.uol.com.br/collection/universa/pausa/experimenta/data.json", "collectionIndex" : true, "channel" : "pausa", "central" : "universa", "titulo" : "Experimenta", "search" : {"repository":"news","tags":"78799"} };