;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Governo de São Paulo anuncia mutirão virtual com 10 mil vagas de emprego

Secretária Patricia Ellen durante entrevista coletiva no Palácio dos Bandeirantes - Divulgação
Secretária Patricia Ellen durante entrevista coletiva no Palácio dos Bandeirantes Imagem: Divulgação

Do UOL, em São Paulo

28/09/2020 13h08

O governo de São Paulo anunciou hoje o lançamento de um mutirão com a oferta de 10 mil vagas de emprego em diferentes áreas. As inscrições serão feitas online para evitar as tradicionais filas vistas no Anhangabaú, no centro da capital, de pessoas em busca de trabalho.

"Esse é o maior mutirão do emprego da história de São Paulo e do país", disse o governador João Doria (PSDB) ao anunciar o programa, feito em parceria com a UGT (União Geral dos Trabalhadores). As inscrições começam hoje, a partir das 17 horas, e vão até o dia 2 de outubro.

Na sequência, entre os dias 5 e 9 de outubro as empresas entrarão em contato para iniciar o processo de contratação. Os interessados devem realizar a inscrição na plataforma meuemprego.sp.gov.br/vagacerta.

"Nós também estamos oferecendo cursos de capacitação e há vagas para pessoas com deficiência", afirmou Patricia Ellen, secretária de Desenvolvimento Econômico. "Todas as empresas que tiverem vaga para cadastrar podem cadastrar sem nenhum custo, é uma plataforma que serve tanto para quem es procurando emprego como para quem está procurando vaga", completou ela.

Segundo Ellen, o programa começa hoje com "10.271 vagas disponíveis em uma série de setores. O maior número de postos a preencher são de técnicos de venda, operadores de telemarketing e estoquistas.

A secretária ainda informou que o estado começou a ter uma redução da perda de emprego em junho e, em julho, registrou o primeiro saldo líquido positivo desde o início da pandemia, com pouco mais de 22 mil vagas criadas.

"O estado de São Paulo está se descolando do resto do Brasil na velocidade da retomada e temos a expectativa de queda de PIB relativamente menor", afirmou a secretária.

De acordo com Patrícia Ellen, a atividade econômica atual é a mesma de janeiro. Ela ainda declarou que há uma série de medidas em estudo para atrair investimentos estrangeiros e nacionais. O estado vai usar seu compromisso com o meio ambiente e combate a desigualdades para atrair capital.

Ela afirmou que o setor de alimentos, infraestrutura, tecnológico e serviços estão crescendo no momento. Outro esforço é para formalização de pequenos e microempreendedores, segmentos que empregam bastante.

A secretária ainda comentou que está percorrendo os polos de desenvolvimento para montar uma programa de retomada econômica. Ela se reuniu com sete deles e há mais e há mais sete que serão ouvidos até o final do mês. Nos próximos dias o governo de São Paulo pretende lançar um programa que é coordenado pelo secretário da Fazenda, Henrique Meirelles.