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

Oito coisas que só quem usou o sistema DOS vai se identificar

Paul Allen e Bill Gates, cofundadores da Microsoft, em fotos de 2013 e 1981 --este último sendo o ano em que a empresa lançou o MS-DOS - Reprodução/Twitter/PaulGAllen
Paul Allen e Bill Gates, cofundadores da Microsoft, em fotos de 2013 e 1981 --este último sendo o ano em que a empresa lançou o MS-DOS Imagem: Reprodução/Twitter/PaulGAllen

Do UOL, em São Paulo

02/11/2017 04h00

No dia de Finados, vamos relembrar de um "falecido" e saudoso sistema operacional do tempo em que "era tudo mato" na computação pessoal.

Você conhece bem os sistemas operacionais como conhecemos hoje, com muita interface gráfica e fáceis de operar com simples mouse e teclado. Antes deles, o "disk operating system" (sistema operacional de disco), sigla DOS, abriu as portas para o grande público aprender a manipular as "máquinas do futuro".

O sistema DOS pioneiro, o 86-DOS, surgiu em agosto de 1980 e foi criado pela Seattle Computer Products e pelo programador americano Tim Paterson. No ano seguinte, a Microsoft comprou a licença do sistema, adaptou-o e revendeu à IBM para operar os computadores da empresa, sob o nome PC-DOS.

VEJA TAMBÉM:

Como os direitos autorais do sistema não foram cedidos à IBM, Bill Gates acreditava que podia vendê-lo para outras fabricantes. Daí surgiu o MS-DOS, que foi licenciado para mais de 70 empresas nos anos 80 e rendeu muito dinheiro à companhia de Gates, transformando-a no colosso da tecnologia que é até hoje.

Em 1985, a Microsoft lançou o Windows 1.0, que era inicialmente uma interface gráfica entre o sistema DOS e o usuário (falaremos mais disso abaixo). A terceira versão, em 1990, foi o primeiro grande sucesso comercial do Windows e fez o jogo virar de novo.

À medida que o Windows foi se tornando um sistema operacional consolidado e o mercado de computação pessoal evoluiu em função do público leigo, que achava o Windows muito mais fácil de operar do que o MS-DOS, este foi caindo em desuso até ser descontinuado em 2000, após oito versões.

Mas quem operou algum DOS em alguma aulinha de "informática" na escola ou faculdade vai se lembrar do que listamos abaixo com alguma nostalgia, ainda que agradeça o fato dos sistemas operacionais de hoje serem bem melhores.

  • Reprodução

    Era tudo preto e branco (ou verde...)

    Mesmo quem não lembra de mais nada sobre como operar o DOS vai recordar como os monitores dos computadores antigos eram enormes, com tubos de raios catódicos (como as TVs da época) e monocromáticos. Sobre a tela preta, os caracteres eram brancos ou verdes. Alguns monitores traziam uma cobertura de fósforo verde bem intensa, tornando os caracteres muito claros na tela. Esse visual foi tão marcante entre os nerds mais velhos que inspirou a chuva de códigos do filme "Matrix".

  • Reprodução

    Mouse? Que é isso?

    O mouse é um periférico que foi inventado para ser uma alternativa ao teclado para entrada de dados no sistema operacional. Mas ele faz sentido em ambientes gráficos, onde você interage com um cursor, que será apontado e clicado para algo na tela, como os ícones do Windows. Mas no DOS, ele não era necessário (falaremos disso a seguir) e daí se você apresentasse um computador com esse sistema para as crianças de hoje, elas iriam procurar um mouse em vão.