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

Lúcio Costa Arquiteto e urbanista brasileiro

27-2-1902, Toulouse, França

13-6-1998, Rio de Janeiro (RJ)

Do Klick Educação

17/08/2015 20h58

Autor do Plano Piloto de Brasília, uma das maiores realizações urbanísticas do século, Lúcio Costa foi um pioneiro na moderna arquitetura brasileira. Natural de Toulouse, na França, filhos de pais brasileiros, graduou-se em arquitetura pela Escola Nacional de Belas-Artes, no Rio de Janeiro, em 1924. Sete anos mais tarde, foi convidado a dirigir a escola, onde reformulou o ensino de Arquitetura. Os métodos de ensino foram abandonados e adotou-se em seu lugar um currículo baseado nas teorias funcionais da Bauhaus e de Le Corbusier. Encontrando, porém, resistência às suas idéias, mais tarde Lúcio Costa demitiu-se. Em 1936, liderou a equipe de jovens arquitetos, entre eles Oscar Niemeyer, que, a partir do traço inicial de Le Corbusier, criaram o Ministério da Educação, hoje Palácio da Cultura, no Rio de Janeiro, que viria a se tornar um marco histórico na arquitetura brasileira. Três anos depois, conquistou o primeiro lugar num concurso para escolha do pavilhão brasileiro na Feira Internacional de Nova York (EUA). Em 1957, venceu o concurso público dedicado à construção da nova capital brasileira: Brasília. Situada no árido Planalto Central do país, a cidade assumiu a forma de um avião. Enquanto os prédios governamentais foram dispostos ao longo do principal eixo leste-oeste, os bairros residenciais ocuparam o norte-sul. Juscelino Kubitschek inaugurou a nova capital em abril de 1960. Elaborou também o conjunto residencial do Parque Guinle (1948-1954), no Rio de Janeiro, a Vila Monlevade (1935), em Minas Gerais, a Cidade Universitária da Ilha do Fundão (1936), no Rio de Janeiro, Casa do Brasil, na Cidade Universitária de Paris (1950), sede do 36.º Congresso Eucarístico Internacional, no Rio de Janeiro (1955) e a sede central do Jóquei Clube de São Paulo (1956). Como urbanista, fez mudanças no trânsito do Rio de Janeiro, realizou o plano de urbanização da Barra da Tijuca e de Jacarepaguá e alargamento da Praia de Copacabana.