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

Página Cinco

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Prêmio Menino do Acre: 'Pediu leite, só tinha café' é a pior leitura do ano

Conheça o vencedor do Prêmio Menino do Acre - Reprodução
Conheça o vencedor do Prêmio Menino do Acre Imagem: Reprodução

Colunista do UOL

29/12/2021 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

A bomba chegou em 2017. Após uma história pessoal de mistérios rocambolescos, Bruno Borges lançou o primeiro volume de "TAC - Teoria da Absorção do Conhecimento". Pelo auê que o sumiço do garoto acreano causava, resenhei o trabalho. Presunçoso, tolo e mal escrito, o livro alcançou um feito raro: se consolidou como a pior leitura que já fiz a vida.

Criei o Prêmio Menino do Acre - Troféu Auto Revolucionar-se a Si Mesmo no ano seguinte, como uma espécie de contraponto às dezenas de listas edificantes que pululam por aí no final de dezembro. Olhando para as leituras menos prazerosas feitas nos últimos doze meses - leituras que acontecem por necessidade, curiosidade, mero masoquismo intelectual... -, escolho a que se destaca como a pior de todas.

O indesejado Troféu Auto Revolucionar-se a Si Mesmo já tem história. O Prêmio Menino do Acre foi para Ernesto Araújo em 2018 por conta do trio de ficções "A Porta de Mogar", "Xarab Fica" e "Quatro 3". Em 2019 foi a vez de E. L. James ser congratulada pelo que cometeu em "Mister". No ano ado, Rosangela Moro levou o galardão graças às adulações feitas em "Os Dias Mais Intensos - Uma História Pessoal de Sérgio Moro".

Por mais que associemos a literatura, boa ou péssima, aos livros, a arte nunca aconteceu somente nas páginas impressas. Nos últimos anos, milhares de escritores aram a utilizar as redes sociais para levar suas prosas e versos para potenciais leitores. Há autores que se tornaram famosos graças ao trabalho iniciado, por exemplo, no Instagram (alô, Rupi Kaur!). Não é a plataforma onde o texto está publicado que define a qualidade da literatura feita, sabemos, há desde grandes cronistas até poetas medíocres nesses espaços.

Atento às tendências da arte, o Prêmio Menino do Acre de 2021 vai para um autor que fez o nome com publicações na Internet. Talvez numa tentativa de ser bem-humorado, chegou a dizer que só ficava atrás de Machado de Assis na sua leitura da literatura nacional. Isso depois de viralizar com um texto em que a moça pedia leite, mas o rapaz só tinha café para lhe oferecer. Hoje difícil de encontrar nas redes, a peça constrange ao apostar em tipos aparentemente inconciliáveis e tentar contrastar um romantismo barato e piegas com uma sacanagem digna das pornografias mais canastronas.

Por "Ela me pediu leite... Mas eu só tinha café!", Marcos Bulhões fica com o Prêmio Menino do Acre - Troféu Auto Revolucionar-se a Si Mesmo de 2021.

Você pode me acompanhar também pelas redes sociais: Twitter, Facebook, Instagram, YouTube e Spotify.