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

No Facebook, aluno conta 'dramas' da vida universitária em charges

Cristiane Capuchinho

Do UOL, em São Paulo

02/08/2013 06h00Atualizada em 05/08/2013 15h53

Gastos com xerox, falta de dinheiro, filas do restaurante universitário, fim de semestre. Os problemas do cotidiano de um estudante são a fonte de inspiração para as charges da página Drama Universitário. A página, que começou como uma brincadeira entre amigos, já tem mais de 136 mil seguidores no Facebook e diverte universitários pelo país inteiro.

Aluno de letras, Lucas Carvalho, 19, criou a página em dezembro de 2012, quando ainda estava no primeiro semestre do curso. A rotina se tornou fonte inesgotável de problemas, críticas e piadas. “A universidade tem muita coisa diferente, tem gente de todo tipo e todo tipo de problema e de situação engraçada”, comenta. 

Da população felina do campus da UFC (Universidade Federal do Ceará), onde estuda, surgiu seu principal personagem: o gato Sofrêncio Xerox. É ele quem comenta fotos e situações esdrúxulas compartilhadas por Lucas e por muitos de seus seguidores, que sugerem novos desenhos diariamente. 

Há um pouco de tudo: insetos na comida do bandejão, filas imensas para tirar xerox, noites insones antes de provas ou entregas de trabalho, professores que faltam, custo da vida estudantil. Mas nem tudo são problemas, festas e namoros também estão ali representados. 

Estudante de universidade pública

Os dramas do estudante Lucas começaram já no vestibular. Sem muita certeza do curso que gostaria de seguir, começou a estudar no curso de Tecnologia em Saneamento Ambiental, no IFCE (Instituto Federal de Educação, Ciência e Tecnologia do Ceará).

“Queria desistir no primeiro mês. Tinha muita matéria de exatas, aulas de cálculo. Sempre fui de humanas, fui para lá por causa da nota de corte no Sisu [processo seletivo]”, lembra. 

No processo seletivo de inverno conseguiu uma vaga na Federal do Ceará para o curso de letras. Mas a universidade ava por uma longa greve, que o deixou em casa à espera por meses até o início das aulas.  

Mas seu principal drama é o transporte, diz. Morador de Cascavel (a 64 km de Fortaleza), o universitário a mais de três horas por dia no transporte público para chegar à faculdade. “É muito tempo, o ônibus é cheio. Às vezes é mais cansativo que as aulas”, conta. 

Mudar-se para Fortaleza não é uma opção. A falta de dinheiro é outro drama universitário comum. Por enquanto, o tempo é usado para bolar os desenhos que serão postados no dia seguinte. 

Agora, Lucas Carvalho pensa em transformar o hobby em trabalho. A exemplo do desenhista Carlos Ruas, da página Um Sábado Qualquer, Lucas quer ampliar o número de personagens e fazer produtos para venda, como camisetas. Como forma de tranquilizar a família, garante: "Se não der certo, terei concluído a faculdade e vou ter uma profissão".