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

Maquiavel Filósofo e político do Renascimento italiano

1469-1527, Florença, Itália

Do Klick Educação

17/08/2015 20h58

Niccolò Machiavelli, dito Maquiavel, ensinou ao mundo uma lição de política prática. Nasceu em 1469, filho de um advogado, e cresceu na cidade italiana de Florença. Em 1498, conseguiu um cargo secundário de funcionário do governo de Florença, emprego que conservou durante 14 anos. Tornou-se funcionário público de confiança e, finalmente, um diplomata, que viajou para todas as importantes cidades-Estado da península e também para diversas cortes estrangeiras. Em toda a parte, Maquiavel observava os políticos e suas maneiras; tornou-se um analista do poder. Acima de tudo, amava a Itália e queria vê-la unida sob um monarca. Em 1512, perdeu sua posição por causa de uma mudança no governo florentino. Instalou-se, então, numa pequena comunidade fora da cidade e pôs-se a escrever. A mais famosa de suas obras é O Príncipe, um manual que contém as regras desenvolvidas a partir de suas observações, as quais esperava ver utilizadas por um monarca para unir a Itália. Maquiavel morreu em 1527 e O Príncipe foi publicado cinco anos mais tarde. Típico pensador do Renascimento, Maquiavel é considerado o primeiro teórico do Estado moderno. Ele vislumbrava a necessidade de um Estado centralizador e poderoso, em que o governante se sobressaísse sobre os demais senhores feudais e tivesse poder para conduzir a sociedade. Como outros humanistas italianos da Renascença, Maquiavel sempre foi um ávido leitor. Suas leituras incluíam uma série de livros tradicionais, dirigidos aos governantes e contendo conselhos de como exercer o governo. Os autores tinham escrito em termos idealistas, orientados por crenças religiosas medievais. Maquiavel inverteu suas máximas. Para ele, não havia meios que os fins não justificassem, nem códigos morais que não pudessem ser transgredidos, nem princípios religiosos que reprimissem o governante. Ao fazer a distinção entre o que um homem era e aquilo que deveria ser, ficou com a realidade como a via e eliminou o "deve ser" de seu vocabulário. Para saber mais sobre Maquiavel e seu mundo, leia Renascimento