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

Qual o futuro dos dados? Tilt leva debate à TDC, maior evento de TI do país

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

De Tilt, em São Paulo

31/05/2021 04h00Atualizada em 03/06/2021 12h02

A pandemia não acabou, mas as conexões precisam continuar. A TDC (The Developer's Conference), maior conferência feita por e para profissionais de tecnologia do Brasil, está de volta para o seu segundo evento 100% digital de 2021, e Tilt estará por lá puxando debates profundos sobre o futuro dos nossos dados.

Após o sucesso da primeira edição de 2021, o TDC Innovation, que reuniu mais de 15 mil pessoas, o TDC Connection abre os caminhos para a internacionalização da conferência com um pacote de conteúdos exclusivo em língua inglesa, além de uma trilha internacional com tradução simultânea.

Ao todo são mais de 50 trilhas segmentadas por assunto, além de 6 trilhas internacionais somando mais de 300 palestras sobre os principais temas que movimentam o mercado de tecnologia.

Confira a programação de Tilt:

08/06 (terça-feira):

11h - Dado não é só senha: as novas fronteiras da privacidade. Com Guilherme Tagiaroli, repórter de Tilt, e Carlos Affonso, colunista e diretor do ITS (Instituto Tecnologia e Sociedade).

15h - Dados ultra sensíveis: como lidar? Com Leticia Naisa, repórter de Tilt; Michel Naslavsky, professor do Departamento de Genética e Biologia Evolutiva do Instituto de Biociências da Universidade de São Paulo (USP); e Mariana Tamari, consultora de pesquisa da Coding Rights.

09/06 (quarta-feira):

11h - Projeto Origens: como o DNA ajudou a resgatar o ado. Com Helton Simões Gomes, colunista de Tilt e editor de Diversidade do UOL, e Kelly Nunes, bióloga, doutora em Genética pela Universidade de São Paulo e pós-doutoranda do Departamento de Genética e Biologia Evolutiva do Instituto do Biociências da USP.

15h - Por que seu dado tem valor: entenda a raspagem. Com Lucas Carvalho, repórter de Tilt, e Hiago Kin, presidente da Associação Brasileira de Segurança Cibernética e presidente executivo da Decript.

10/06 (quinta-feira):

10h - Como o DNA reconstruiu a história do Brasil. Com Mirthyani Bezerra, repórter colaboradora de Tilt e autora da reportagem "Uma nação se faz na cama?"; Tábita Hünemeier, coordenadora do projeto DNA do Brasil; e Laura Moutinho, autora de "Razão, Cor e Desejo: uma análise dos relacionamentos afetivo-sexuais inter-raciais no Brasil e África do Sul" e professora do Departamento de Antropologia da USP.

15h - Qual o caminho para ser dona/o dos seus dados? Com Leticia Naisa, repórter de Tilt, e Christian Perrone, coordenador do ITS (Instituto Tecnologia e Sociedade).

Ao longo do ano, serão realizados ainda o TDC Transformation e o TDC Future, em agosto e dezembro, respectivamente.

Serviço: TDC Connections 2021
Quando: De 8 a 10 de junho de 2021
Inscrições: https://promo.thedevelopersconference.com.br/tdcconnections-tilt