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

O diabo na garrafa - Demônio escaldado tem medo de água fria

Certo homem, que tinha todos os motivos do mundo para desconfiar da esposa, necessitou viajar a um país distante. Preocupado com o que poderia acontecer durante sua ausência, pediu ao demônio que vigiasse a mulher. O diabo concordou prontamente – e se transformou num serviçal.

A mulher, contudo, era muito esperta e percebeu que havia algo estranho naquele empregado que fiscalizava todos os seus movimentos e lhe fazia as vontades com extrema rapidez. Chamou, então, o demônio, e disse: “Vejo que você é um empregado com dotes excepcionais, capaz de verdadeiros milagres... Mas duvido que consiga fazer uma coisa...”. O demônio, envaidecido, e querendo provar seu poder, respondeu: “Posso fazer tudo o que a senhora me pedir – e muito mais”. A mulher, aproveitando-se do exagerado amor-próprio do diabo, sugeriu, apontando para uma garrafa vazia sobre a mesa: “Pois duvido que você consiga entrar naquela garrafa”. O capeta, sem perceber a arapuca, enfiou-se no vasilhame. E antes que ele pudesse escapar, a mulher fechou a garrafa com uma rolha.

Nas semanas que se seguiram, a mulher desfrutou de sua liberdade como bem entendeu, comprovando todas as desconfianças do marido. Quando este retornou de viagem, depois de ser recebido com extremo carinho pela esposa, perguntou pelo empregado. “Ah, meu amor”, respondeu a mulher, “um dia, não sei por qual motivo, ele ficou enfezado e simplesmente partiu...” E enquanto o marido pensava sobre o que poderia ter acontecido, ela completou: “Será que não era o demônio? Veja só o cheiro de enxofre que ficou nesta casa desde que ele foi embora!”. De fato, a casa fedia a alguma coisa que a mulher, de caso pensado, queimara sem que o marido percebesse. “Por que você não pega esta garrafa, vai à igreja e enche-a de água-benta? Depois jogamos a água pelos cantos da casa e nos livramos desse cheiro do Inferno...

”O marido, que além de ciumento era um simplório de marca maior, obedeceu. Quando chegou à igreja, aproximou-se da pia de água-benta e, tirando a rolha, começou a encher a garrafa. Mas quando a primeira gota caiu sobre o demônio, este fez o vasilhame explodir – e, queimado pela água-benta, disparou rumo ao Inferno para nunca mais voltar.

O marido, sem nada entender, ainda meio tonto por causa da explosão, voltou para casa. E, para alegria da esposa, continuou viajando a trabalho – mas sem conseguir que o demônio aceitasse tomar conta de sua mulher.