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

Com R$ 4.600 de desconto, vale a pena comprar um MacBook Air? Descubra

MacBook Air está mais barato no Magazine Luiza, por menos de R$ 7.000 - Pexels
MacBook Air está mais barato no Magazine Luiza, por menos de R$ 7.000 Imagem: Pexels

De Tilt, em São Paulo*

14/06/2023 16h46Atualizada em 14/06/2023 16h46

O MacBook Air M1 está com desconto no Magazine Luiza, e pode ser comprado por R$ 6.929,10. A promoção é por tempo limitado e válida apenas para pagamento à vista.

Considerando que o produto custa R$ 11.599 no site oficial da Apple, o preço no Magazine Luiza representa uma economia de R$ 4.699.

Configuração do MacBook Air M1

processador M1 fabricado pela Apple

U (unidade de processamento de dados) de oito núcleos

GPU (unidade de processamento de gráficos) de sete núcleos

256 GB de armazenamento em SSD

tela de retina de 13,3 polegadas (33,78 cm na diagonal), com resolução 2.560 x 1.600 pixels

taxa de atualização de 60 Hz

câmera em alta definição (HD) e três microfones para captação de áudio

MacBook Air M1 - Divulgação/Apple - Divulgação/Apple
Imagem: Divulgação/Apple

MacBook Air M1 (tela de 13 polegada)
Preço: R$ 6.929,10 à vista ou R$ 7.699 em dez parcelas

Diferenciais do MacBook Air M1

  • Na época do lançamento (novembro de 2020), a Apple afirmou que o laptop era mais rápido que 98% dos PCs com Windows instalados.
  • Bateria com autonomia de até 18 horas e esquenta menos que seus concorrentes --por isso não tem ventoinha nem faz barulho.
  • Visor com tecnologia True Tone, que ajusta a temperatura das cores para cansar menos a vista.
  • Desbloqueio do computador com a digital.
  • Uso de processador desenvolvido pela Apple marcou fim de uma era --antes usava chips da Intel.

Vale a pena comprar o MacBook Air M1?

Os MacBooks são computadores de alta performance, por isso são mais indicados para quem trabalha com edição de foto, vídeo, criação, ou outras ferramentas que exijam bastante do computador.

Para a maioria dos brasileiros que usa o computador para tarefas mais básicas, talvez investir esse valor não valha a pena.

Porém, se você é um fã da Apple e está acostumado com a interface dos produtos da marca, o desconto é uma boa oportunidade para economizar um pouco.

Curte eletrônicos, games e achadinhos do momento? Fique de olho na nossa curadoria de produtos: no Monitor de Ofertas UOL, no Twitter (@ofertas_uol), no Telegram (monitordeofertasuol) e nos vídeos do TikTok (@guiadecompras_uol).

Rodapé content commerce -  -

*Com informações de reportagem de Vinicius de Oliveira