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

Apple lança iPhone 4 duas vezes mais rápido que versão anterior

Phil Schiller, vice-presidente de marketing de produtos da Apple, apresenta o novo iPhone 4 - Kevork Djansezian/Getty Images/AFP
Phil Schiller, vice-presidente de marketing de produtos da Apple, apresenta o novo iPhone 4 Imagem: Kevork Djansezian/Getty Images/AFP

Da Redação

04/10/2011 15h02Atualizada em 04/10/2011 19h00

A Apple anunciou nesta terça-feira (4) uma atualização do smartphone iPhone 4. Apesar da expectativa de um iPhone 5, a empresa anunciou o iPhone 4S, que, segundo a companhia,  tem velocidade duas vezes maior que o modelo anterior, lançado em junho de 2010. A apresentação realizada em Cupertino (Califórnia) foi liderada por Tim Cook, diretor-executivo da Apple, que recentemente substituiu Steve Jobs.

O aparelho virá com o preço de US$199 (16 GB), US$ 299 (32 GB) e US$ 399 (64 GB), associado a contratos de dois anos com operadoras norte-americanas. O lançamento oficial será no dia 14 de outubro nos Estados Unidos e outros seis países. A Apple não divulgou dados sobre as vendas do iPhone 4S no Brasil. 

O que dará maior velocidade ao smartphone é o chip A5, mesmo utilizado no iPad 2. O processador do smartphone iPhone 4S da Apple terá dois núcleos com 1 GHz cada um.  Além disso, segundo a companhia, o aparelho terá melhorias consideráveis em processamento gráfico, fazendo com que o aparelho seja sete vezes mais rápido na exibição de jogos e vídeos.  

O novo iPhone 4S terá uma câmera de 8 megapixels – mesma resolução de seu principal rival, o Samsung Galaxy S II. Além disso, a empresa afirmou que o aparelho captará imagens de forma mais rápida (33%) que o iPhone 4 e será mais sensível à luz.  Para tirar uma foto, o usuário gastará 1,1 segundo.

Quem gosta de vídeos poderá fazer gravação em FullHD (1080 P) e contará com um mecanismo de estabilização de imagem em tempo real, para evitar filmagens com muitos tremidos.

Depois do lançamento do dia 14 nos Estados Unidos, Canadá, Austrália, Reino Unido, França, Alemanha e Japão, o aparelho estará disponível em 22 países no dia 28 de outubro. Até o final do ano, a novidade será vendida em outros 70 países.

Software
A nova versão do sistema operacional para portáteis da Apple, o iOS5, estará disponível no dia 12 de outubro. Essa também é a data de disponibilização do sistema iCloud, que levará o conteúdo dos gadgets da Apple para a nuvem (entenda aqui como funciona).

 

O principal recurso de software apresentado para o novo iPhone é o Siri -- nome de uma companhia comprada pela Apple no ano ado. A aplicação, que será exclusiva e nativa do iPhone 4S, será uma espécie de "mordomo virtual". Basta o usuário segurar o botão home por dois segundos e perguntar algo pelo telefone, como por exemplo: "Devo levar o guarda-chuva hoje"> Por Alexander Cornwell