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

Lembra da internet dos anos 1990? Agora ela pertence a um museu

Site da Apple em 1994 - Reprodução
Site da Apple em 1994 Imagem: Reprodução

Do TAB, em São Paulo

27/08/2019 16h19

Esqueça a estética limpa e o design minimalista da Apple. Uma olhada no site da empresa em 1994 vai te mostrar uma Apple completamente diferente. Naquela época, a empresa ainda usava uma versão em arco-íris do seu icônico logotipo, e as cores riscavam toda a página para apresentar as opções do menu. A julgar pelos padrões de design atuais, o visual é terrível.

Você pode visualizar este e outros registros da época no site Version Museum. Nele, é possível acompanhar a evolução de outras tecnologias e a estética antiga de gigantes da internet, como Facebook e Amazon, aplicativos como Microsoft Word e Internet Explorer e jogos populares como Mario Kart e Grand Theft Auto.

O criador do site, apresentado apenas como Alex, conversou com o site norte-americano Slate sobre a ideia de reunir, como em um museu, instantâneos de uma época em que muitas dessas tecnologias de hoje ainda eram fantasias dignas de ficção-cientifica.

"Tenho boas lembranças de muitas das primeiras versões dessas tecnologias e acho que quando as pessoas usam computadores e sites ou jogam videogame hoje em dia, eles não percebem que estivemos em uma jornada de décadas para chegar onde estamos hoje", explica.

Para as gerações mais jovens que nunca usaram essas versões mais antigas, é uma janela para a internet do ado nunca antes vista. O filho de Alex, um nativo digital, ficou surpreso com a experiência. "Sua mente fica confusa como as coisas eram tão básicas em comparação com hoje", diz Alex.

Além da diversão dos adolescentes ou da nostalgia dos adultos, o museu desempenha um papel cada vez mais importante: preservar mundos digitais que, de outra forma, poderiam ser perdidos à medida que sites e softwares atualizam sua aparência.

"Durante o início da era da internet, os dias jurássicos da web, a era da proto-internet, era como o oeste selvagem", diz Alex. "Você vê uma incrível explosão de criatividade nos anos 1990 e início dos anos 2000 e, na minha opinião, muito disso convergiu para uma abordagem mais comum [da interface do usuário]."

Fique por dentro de comportamento e cultura seguindo o TAB no Instagram e tenha conteúdos extras sobre inovação, tecnologia e estilo de vida.