;(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();
})();
Viagem de pegação: saiba como se dar bem usando o Tinder no exterior
É preciso ultraar alguns choques culturais para conquistar estrangeiros pelo Tinder no exterior Imagem: Pexels/Creative Commons
Marcel Vincenti
Colaboração para o UOL
21/08/2017 04h00
Você está solteiro ou solteira e acaba de chegar a um destino de férias no exterior. O que deve estar em sua lista de prioridades? Visitar o principal cartão-postal da cidade? Comer um prato típico? Ou conhecer alguém para viver um romance gringo ou, simplesmente, uma noitada de sexo?
O Tinder funciona em cerca de 190 países, reúne gente interessada em paquera e gera dezenas de milhões de “matches” (quando dois usuários gostam um do outro e começam a conversar online) todos os dias. Mas há diferenças entre usá-lo no Brasil e no exterior. Abaixo, saiba como superar choques culturais e se dar bem.
Dicas de um turista brasileiro
O estudante paulista Yuri Vieira*, de 25 anos, já viajou para quase dez países, entre eles Canadá, Estados Unidos, México e Uruguai. Nessas jornadas, conheceu dez garotas via Tinder e notou que, lá fora, a abordagem na hora da paquera deve ser diferente do que é no Brasil.
“Principalmente no Canadá, nos Estados Unidos e na Europa, o brasileiro não pode ser tão atirado como a gente é aqui no Brasil, chamando para sair. Lá, os homens costumam ser mais fechados”.
Yuri, porém, acha o que a gente tem muitas vantagens. “Em quase todo o mundo, as pessoas gostam de brasileiros e se interessam pelo nosso país. Nós somos pessoas atrativas e carismáticas por natureza, e temos que saber usar isso a nosso favor na hora de xavecar alguém lá fora”.
Para isso, é fundamental que o turista saiba pelo menos se comunicar em inglês. E, em lugares como Canadá e Estados Unidos, às vezes é preciso ter muita paciência. “Depois do 'match', pode demorar alguns dias e rolar muita conversa online antes de você conseguir marcar um encontro”, diz Yuri. O estudante paulista tem uma tática: “como turista, você sempre pode falar que irá embora em breve e que, talvez, vocês possam perder a chance de se conhecer. Isso pode fazer o encontro acontecer mais rapidamente”.
Segundo o Tinder, há uma média de 26 milhões de "matches" ocorrendo no aplicativo todos os dias
Imagem: Pixabay/Creative CommonsDicas de uma turista brasileira
A publicitária paulistana Flávia Souza*, 41 anos, visitou sete países europeus em 2015, como Espanha, França e Alemanha. Solteira na época, ela não pestanejou: acionou o Tinder para tentar conhecer alguém interessante durante a viagem.
A experiência foi bem-sucedida, mas teve seus choques culturais. Segundo ela, a brasileira que quiser usar Tinder na Europa deve estar preparada para duas situações antagônicas: a de conhecer caras realmente legais, mas que demoram para tomar uma atitude nos primeiros encontros, e a de lidar com homens que acham que brasileiras são fáceis demais e que irão propor sexo já nas primeiras palavras trocadas pelo aplicativo.
“Eu dei 'match' com um sueco que foi muito desrespeitoso só porque eu era brasileira. Cortei o papo ali mesmo. Mas também conheci um alemão que foi extremamente gentil. Depois de conversarmos muito no Tinder, ele me levou para tomar um café. Fiquei interessada nele, mas, no final da noite, ele não tomou nenhuma atitude, de pedir um beijo ou coisa parecida. Fiquei me perguntando: 'será que ele me achou feia">var Collection = {
"path" : "commons.uol.com.br/monaco/export/api.uol.com.br/collection/nossa/viagem/ultimas/data.json",
"channel" : "viagem",
"central" : "nossa",
"titulo" : "Nossa Viagem",
"search" : {"tags":"22421"}
};