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

Esse conteúdo é antigo

USP oferece cursos gratuitos e online na área de humanidades

A oportunidade é gratuita e aberta ao público maior de 18 anos, não precisando ser aluno da USP - Marcos Santos/USP Imagens
A oportunidade é gratuita e aberta ao público maior de 18 anos, não precisando ser aluno da USP Imagem: Marcos Santos/USP Imagens

Agência Brasil

27/07/2021 19h26

A Universidade de São Paulo (USP) abriu hoje (27) inscrições para os cursos de inverno online na área de humanidades. Serão 66 cursos, com 4.985 vagas, organizados pela Faculdade de Filosofia, Letras e Ciências Humanas da universidade. A oportunidade é gratuita e aberta ao público maior de 18 anos, não precisando ser aluno da USP.

As vagas são limitadas e as inscrições serão realizadas por sorteio, independentemente da ordem de inscrição. Os 66 cursos foram divididos em cinco grupos e as datas para inscrição variam de acordo com esses grupos, de hoje até 5 de agosto.

Os cursos estão divididos em quatro grupos temáticos, sendo "Estudos filosóficos, históricos e geográficos", "Estudos linguísticos e de tradução", "Estudos literários" e "Estudos de antropologia, política e sociedade". Os temas são relacionados às linhas de pesquisas estudadas nos 23 programas de pós-graduação da faculdade.

Entre os assuntos abordados nos cursos, estão crise política, direitos humanos, economia, LGBTQIA+, moda, movimentos sociais, música, racismo, sexualidade. Além disso, os interessados poderão estudar sobre obras e autores da literatura africana, alemã, brasileira, indígena, infantil e juvenil, japonesa, latino-americana, russa, entre outras.

As inscrições para participar do sorteio devem ser feitas pelo site do Sistema Apolo, onde o interessado deverá selecionar a unidade "Faculdade de Filosofia, Letras e Ciências Humanas (São Paulo)". Com isso, aparecerão os cursos disponíveis para inscrição naquela data específica.

A universidade recomenda que o processo de inscrição seja feito pelo computador, porque alguns dispositivos de celulares ou navegadores de internet não conseguem completar a inscrição no sistema. Os sorteados estarão diretamente matriculados, não sendo preciso entrar em contato para confirmação, apenas esperar o contato dos ministrantes dos cursos por e-mail.

As aulas começam a partir de 10 de agosto, de acordo com o curso escolhido, e os alunos que tiverem 75% de frequência mínima receberão certificados de conclusão.