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

Chico Barney

OPINIÃO

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

BBB 23: Saída de Alface para Larissa é mais uma derrota do Brasil

Colunista do UOL

20/04/2023 10h32

Receba os novos posts desta coluna no seu e-mail

Email inválido

Lembra dele? O saudoso BBB 23 continua sendo transmitido pela Globo, pelo menos até o dia 25 de abril. E hoje tem paredão! Sabe? Quando as pessoas (quer dizer, supostamente pessoas) votam para eliminar um participante, e tal. Hoje a disputa é dupla, algo que não acontecia desde Prior versus Hadballa em 2020.

E quem está na berlinda? Ricardo Alface e Larissa. São dois estilos de jogo completamente diferentes, a ponto de valer uma análise mais detalhada da conjuntura.

O jogo da Larissa
Sempre foi truculenta, com um forte senso de oportunidade. Quando percebe algum flanco aberto no campo do adversário, ataca sem dó nem piedade. Já era assim antes da eliminação, quando era conhecida em verso e prosa como A Grande Dama das Segundas-Feiras, por se guardar durante a semana para brilhar no Jogo da Discórdia.

Mas ficou ainda mais cirúrgica quando retornou na repescagem. Voltou com um dossiê sobre adversários e aliados debaixo do braço. E aí deitou e rolou, de um jeito ainda mais frio e calculista. Utilizou artilharia pesada para atacar a reputação de Domitila e Cezar, sempre em momentos estratégicos.

Mas a melhor jogada foi se escorar na Amanda, de quem nunca foi muito próxima, depois de descobrir que ela tinha uma torcida forte aqui fora. Chegou a pedir ajuda para os docshoes no Raio X. Manipulou sem nenhum constrangimento. Isso é BBB, afinal de contas.

O jogo do Alface
Encantou o Brasil por um estilo completamente diferente. Enquanto as desérticas tentam emular de um jeito bem baixo o jogo das fadas sensatas no BBB 20, Ricardo fez o possível para viver o sonho de um Big Brother Brasil idílico, que virtualmente não tem mais espaço para existir.

Brigou por causa de fila no banho, por frigideira suja, por combinação de votos. Teve um grande nêmesis na figura de outro calvo, o Cezar, foi expulso do próprio quarto, traiu quem confiava nele, mas foi fiel ao que acreditava ser melhor para si mesmo —e mais do que isso, para o público.

Alface é o melhor tipo de jogador que existe: aquele que vacila, mas não priva a audiência de um entretenimento de qualidade. A tal da "movimentação do jogo" que virou um mantra esse ano é isso, a busca por garantir um programa divertido para nós.

E a leveza com que Alface nutriu esses meses de boas narrativas deveria fazer com que ele chegasse ainda mais longe. Mas essa dedicação à vida lá dentro daquela mansão cenográfica não encontrou o mesmo eco que as estratégias pesadonas de Larissa e suas asseclas, infelizmente.

***

Então o paredão de logo mais provavelmente terá o menor número de votos da temporada, com Alface indo embora com as luzes já apagadas, não pela proximidade da grande final, mas pelo profundo desinteresse da sociedade civil com esse BBB 23 sequestrado por facções radicais.

É outra derrota do Brasil. Uma pena. Merecíamos todos melhor sorte.

Voltamos a qualquer momento com novas informações.