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

Émile Zola Escritor francês

02/04/1840, Paris, França

28/09/1902, Paris, França

Da Página 3 Pedagogia & Comunicação

13/08/2005 14h48

Émile-Édouard-Charles-Antoine Zola foi o fundador e o principal representante do movimento literário naturalista. Educado em Aix-en-Provence, Zola começou a trabalhar em 1862 no departamento de vendas da uma editora. Quatro anos depois decidiu dedicar-se exclusivamente à literatura. Suas duas primeiras obras, "Contes à Ninon" (1864) e o romance "La Confession de Claude" (1865) marcaram a transição para o naturalismo, já definitivamente manifesto em "Thérèse Raquin" (1867).

Inspirado na filosofia positivista e na medicina da época, Zola partia da convicção de que a conduta humana é determinada pela herança genética, pela fisiologia das paixões e pelo ambiente. Conforme afirmou no ensaio "O romance experimental" (1880), o desenvolvimento dos personagens e das situações deve ser determinado de acordo com critérios científicos similares aos empregados nas experiências de laboratório. A realidade deve ser descrita de maneira objetiva, por mais sórdidos que possam parecer alguns aspectos.

Consciente da dificuldade de conferir caráter científico a uma obra de ficção, Zola procurou pôr em prática suas concepções. A partir de 1871, trabalhou num ciclo de vinte romances, "Os Rougon-Macquart", que tinha como subtítulo "História Natural e Social de uma Família no Segundo Império". Essa obra constitui um vigoroso e franco sobre a decadência da sociedade do Segundo Império - o que lhe valeu várias acusações de pornografia. A primeira parte do ciclo - "A Taberna" (1876) e "Nana" (1880) - é dominada por uma atmosfera de degeneração e fatalismo, mas a partir de "Germinal" (1885) a descrição das más condições de vida numa comunidade de mineradores destaca a opressão social como responsável pela paralisação moral da humanidade.

Posteriormente Zola escreveu outros dois conjuntos de romances, "As Três Cidades" (1894-1898) e "Os Quatro Evangelhos" (1899-1902), onde manteve a violência quase visionária dos trabalhos anteriores.

Nos últimos anos de vida, o escritor foi mais uma vez alvo de polêmica por sua intervenção no caso de Alfred Dreyfus, oficial judeu do Exército francês condenado por traição, cuja inocência Zola defendeu de público, acusando os comandos militares de terem itido provas falsas. Julgado por injúria e condenado a um ano de prisão, Zola exilou-se em Londres em 1898 e só regressou à França 11 meses depois. Émile Zola e sua mulher morreram em Paris, asfixiados pelo monóxido de carbono de um acidente com uma chaminé.