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

China lança maior rede de telefonia móvel 5G do mundo

AFP
Imagem: AFP

Shirley Zhao

31/10/2019 07h30

As três operadoras de redes sem fio estatais da China estrearam serviços de telefonia móvel 5G hoje, um marco na tentativa do país de se tornar uma potência tecnológica, mesmo diante da guerra comercial com os EUA

A China Mobile, maior operadora do país, lançou sua rede em 50 cidades, que incluem Pequim, Xangai e Shenzhen, com pacotes a preços tão baixos quanto 128 yuans (cerca de R$ 70) por mês. As rivais China Telecom e China Unicom Hong Kong também introduziram serviços com preços equivalentes.

As operadoras planejavam estrear as redes no próximo ano, mas aceleraram o lançamento diante do boicote dos EUA à fornecedora de equipamentos 5G e gigante de tecnologia chinesa Huawei Technologies. Operadoras nos EUA introduziram o 5G em partes de algumas cidades, sem usar equipamentos da Huawei, e a Coreia do Sul estreou sua versão em abril, embora a China se torne rapidamente a maior fornecedora em virtude de sua enorme população e investimento das empresas.

"Embora alguns outros países tenham lançado serviços 5G no início deste ano, a China terá a maior rede operacional comercial 5G do mundo na sexta-feira", disseram Chris Lane e outros analistas do Sanford C. Bernstein em nota aos clientes na quarta-feira. "A escala da rede e o preço dos serviços 5G terão um impacto crucial em toda a cadeia de fornecimento."

A mídia local havia informado inicialmente que as operadoras disponibilizariam o 5G a partir de sexta-feira. Na quinta-feira pela manhã, as três empresas já estavam oferecendo o ao serviço.

Usuários na China - mais de 10 milhões de pessoas já se registraram para o 5G - terão o a vídeos e jogos mais rápidos, mais aplicativos de realidade virtual e melhor desempenho para videoconferência móvel.

Os pacotes 5G da China Mobile para usuários com maior demanda por dados têm preços semelhantes aos planos 4G, que custam a 588 yuans por mês.

As maiores cidades, como Pequim, Xangai e Shenzhen, terão cobertura total primeiro. As três operadoras projetaram investimento de 302 bilhões de yuans este ano.

A escala da implantação da infraestrutura 5G na China é especialmente importante para a Huawei. O domínio no maior mercado do mundo pode atenuar os efeitos de uma campanha nos EUA contra outros países que instalam equipamentos da Huawei, acusada de representar uma ameaça à segurança. Apesar da pressão dos EUA, a Huawei disse em julho que assinou mais de 60 contratos comerciais para fornecer redes 5G em todo o mundo, incluindo pelo menos 28 na Europa.

Com a colaboração de Yuan Gao.