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

Turbine seu cérebro

Dicas para usar melhor a sua mente


Turbine seu cérebro

Em vez de dizer que não tem tempo, assuma que não é prioridade

Denis Freitas/UOL
Imagem: Denis Freitas/UOL

Colaboração para o UOL VivaBem

20/05/2019 04h00

Se você tivesse uma hora a mais por dia, o que você faria? Aproveitaria para dormir um pouco mais, começaria a treinar para uma maratona, ou, finalmente, começaria aquele curso que você tem adiado há anos? Tempo virou artigo de luxo, mas, para os especialistas em produtividade, não é bem isso o que falta: "Se ameaçarem demitir você por não falar inglês você vai se virar para estudar, nem que seja no fim de semana, então em vez de dizer que não tem tempo para algo, diga que aquilo não é sua prioridade", desafia Marcelo Bueno, mastercoach da Sociedade Brasileira de Coaching.

A partir dessa consciência, é preciso seguir em frente com um plano para concretizar seus sonhos sem abrir mão das suas necessidades e obrigações. Ler mais, aprender um novo idioma, ganhar uma certificação (para pleitear um aumento com o chefe) ou ajudar seu filho a ter melhores notas na escola podem parecer tarefas complexas demais para serem encaixadas numa agenda abarrotada, mas, graças à tecnologia, hoje é possível fazer qualquer coisa em qualquer lugar. Para a coach norte-americana Elizabeth Grace Saunders, autora do livro "How to invest your time like money" ("Como investir seu tempo como se fosse dinheiro", sem tradução no Brasil), se você aproveitar os minutos que sobram aqui e ali vai ver que é possível fazer muito mais do que imagina.

  • Denis Freitas/UOL

    Pense grande ao definir prioridades

    Especialista em gerenciamento de tempo, Saunders sugere que, em primeiro lugar, as pessoas modifiquem suas próprias "configurações padrão". Isso significa que é preciso sair do piloto automático e se planejar com antecedência para não se perder nas obrigações diárias. Mas isso exige uma tarefa anterior --definir suas prioridades. Os coaches costumam iniciar o trabalho com os clientes com uma análise minuciosa de cada área da vida (saúde, família, carreira etc). Também há o clássico exercício de se imaginar no futuro, olhando para trás, para ver o que é preciso aperfeiçoar. Só a partir dessa visão panorâmica é que é possível estabelecer metas e estratégias para conquistá-las, e esse processo precisa ser feito com riqueza de detalhes. "Muita gente perde a motivação de ir à academia porque não definiu direito as metas antes de começar", observa Bueno. Sem essa clareza, qualquer tempo que sobrar irá fácil para o ralo.

  • Denis Freitas/UOL

    Aposte no diário de bordo

    A primeira tarefa para arrumar mais tempo é fazer um inventário. Experimente fazer um diário de suas atividades diárias por pelo menos uma semana. Procure anotar tudo o que faz em cada hora, inclusive aquilo que parece não ter importância, como a própria escrita. Depois, classifique cada atividade de acordo com o impacto que ela tem para o seu projeto pessoal ou profissional. A medida é tiro e queda para identificar quanto tempo e energia são desperdiçados com atividades que poderiam ser delegadas, eliminadas, ou, pelo menos, enxugadas, como a leitura de e-mails desnecessários ou a navegação em redes sociais, exemplos citados pelo coach Marcelo Bueno. Um levantamento recente do Global Web Index (GWI) indica que as pessoas têm gasto, em média, duas horas e 22 minutos por dia com troca de mensagens ou "likes". Vamos combinar que seria possível adiantar bastante a leitura ou queimar um bocado de calorias em todo esse tempo, não?