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

Oliveira Viana Sociólogo, historiador e jurista brasileiro

20 de junho de 1883, Fazenda Rio Seco, Saquarema, RJ (Brasil)

28 de março de 1951, Niterói, RJ (Brasil)

Da Página 3 Pedagogia & Comunicação

23/09/2009 22h17

Depois de fazer os estudos iniciais em Niterói, RJ, Francisco José de Oliveira Viana ingressou na Faculdade Livre de Direito do Rio Janeiro, ali se diplomando. Além de trabalhar como professor de direito criminal na Faculdade de Direito do Estado do Rio de Janeiro, Viana ocupou, a partir de 1926, o cargo de diretor do Instituto de Fomento Agrícola do Estado do Rio de Janeiro.

Data de 1920 a primeira edição da obra que colocou Oliveira Viana no patamar mais alto da ensaística brasileira: Populações meridionais do Brasil. Nesse mesmo ano, Viana também publicou O idealismo na Constituição.

Após a Revolução de 1930, Oliveira Viana ocupou postos-chave na istração pública. De 1932 a 1940, exerceu as funções de consultor jurídico do Ministério do Trabalho e foi um dos arquitetos da Previdência Social. Seu pensamento trabalhista está reunido em alguns de seus livros, como Direito do trabalho e democracia social, de 1951.

Em 1940, Oliveira Viana foi nomeado ministro do Tribunal de Contas da União, cargo em que se aposentou.
 

Obra clássica

Apesar de ser considerada por alguns estudiosos como elitista e conservadora, a obra de Oliveira Viana permanece importante, principalmente pela seriedade com que foi construída. Retificados em muitos pontos pelos cientistas sociais das gerações seguintes, os estudos de Viana ainda são leitura imprescindível para quem deseja compreender o Brasil.

O principal erro de Oliveira Viana - que era também o erro de parcela da antropologia social de sua época - talvez tenha sido o de subestimar a presença do negro na formação social brasileira.

As melhores contribuições de Oliveira Viana, além do clássico Populações meridionais do Brasil, são Instituições políticas brasileiras, obra póstuma, publicada em 1955, e O ocaso do império (1925).

Segundo o historiador José Murilo de Carvalho, "a explicação do ocaso do Império feita por Oliveira Viana tornou-se clássica e foi retomada por muitos pesquisadores depois dele. A análise dos militares, particularmente, inspirou estudos recentes embasados na sociologia das organizações. Pode-se dizer que análises posteriores acrescentaram apenas duas causas políticas e ideológicas à queda do Império, para ficarmos dentro da delimitação do livro: o papel da Igreja e o de São Paulo, a província".

Oliveira Viana foi eleito para a Academia Brasileira de Letras em 1937.
 

Pequeno Dicionário de Literatura Brasileira; Enciclopédia Mirador Internacional