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

Capital para todos

A filosofia de negócios que une lucro e ativismo promete reinventar a economia global

Dizem que nóis é pobre porque não tem dinheiro. Então nóis foi lá e inventou um dinheiro”, conta Thiago Vinícius de Paula da Silva, 27, criador de uma moeda que agita a economia num bairro de periferia de São Paulo.

Thiago não está brincando de banco imobiliário. Ele é um empresário, um empreendedor, que tinha apenas uma certeza quando era mais novo: queria crescer junto com a sua comunidade, na região do Campo Limpo. Antenado com as necessidades do seu meio, botou na rua em 2009 uma espécie de “Sebrae da quebrada”, apelido informal que usa para explicar o projeto alternativo de crédito. Sem CNPJ próprio, ele ajudou a criar o Banco Comunitário União Sampaio. A organização lançou uma moeda alternativa e com ela já movimentou mais de R$ 1 milhão em empréstimos a moradores locais. O dinheiro batizado de “Sampaio” é aceito em 140 estabelecimentos e fomenta projetos culturais.

De empreendedores como Thiago a grandes empresas, muita gente corre atrás para ser relevante em um novo cenário. Os negócios tradicionais, que visam apenas ao lucro, terão a concorrência desse modelo que não abre mão do impacto social. Na mira de ambos, a preferência dos investidores e de um novo perfil de consumidor, quase um ativista com dinheiro em mãos.

Como faturar continua importando, é bom saber que os negócios sociais apresentam um quadro promissor. Segundo pesquisa da Universidade de St. Gallen (Suíça), que mantém no Brasil um escritório para pesquisa e intercâmbio, o país tem atualmente cerca de 20 grupos voltados exclusivamente a fomentar iniciativas de impacto. Entre 2014 e 2015, esses fundos de investimento levantaram mais de US$ 100 milhões para empresas do segmento. Somente em 2014, surgiram por aqui o dobro de negócios sociais do que nos dez anos anteriores - a pesquisa também indica que, no mesmo ano, investidores separaram até US$ 127 milhões para esse tipo de empreendimento.

Periferia é money

A sensação desse movimento contemplar tanto pequenos como grandes é mais visível na atuação da Yunus Negócios Sociais no Brasil. A empresa, que representa a rede global fundada pelo Nobel da Paz Muhammad Yunus, amadurece ideias de empreendedores independentes e, ao mesmo tempo, desenvolve um programa para atender corporações tradicionais interessadas em “entrar no clube” do impacto social. No país, a iniciativa ajudou a decolar o Saladorama, por exemplo – um serviço de comida em regiões de baixa renda do Rio de Janeiro, que capacita moradores de favelas e dissemina a cultura da alimentação saudável. Paralelamente, organiza o ActionTank, projeto que concebe soluções para potências do mercado.

“A gente tenta se aproveitar da expertise dessa empresa. O que essa empresa faz muito bem que pode ser útil para solucionar algum problema grave do Brasil ou do mundo? Por exemplo, a gente selecionou a Ambev. Você pode pensar: ‘pô, a Ambev faz cerveja, que problemas vocês vão resolver">

Colaboraram nesta edição:

Agência Énois, reportagem; 7Iris, filmagem; Artemisia, Natura, Sistema B, Thais Yumi e Yunus Negócios Sociais, consultoria técnica; Coletivo Arteria PontaPonta, Gatuno, Lhama Verde e Wolpy, arte em grafite para a capa

[email protected]

Direção: Rodrigo Flores; Edição: Daniel Tozzi; Reportagem: Juliana Carpanez, Rodrigo Bertolotto; ux/design: André Alcalay, Mariana Romani, Solenn Robic; vídeo: Mariah Kay, Ricardo D'Addio;