;(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 BBB, Brunna elogia macarronese da sogra: "Melhor do mundo"; veja receita

O prato é o preferido da esposa de Brunna, a cantora Ludmilla - Reprodução
O prato é o preferido da esposa de Brunna, a cantora Ludmilla Imagem: Reprodução

Luciana Cavalcante

Colaboração para Nossa

21/01/2022 11h42

Em uma conversa na cozinha da Xepa, a dançarina Brunna Gonçalves, lembrou com saudades de um prato feito pela sogra: a macarronese, receita preferida de sua esposa, a cantora Ludmilla.

"A minha sogra faz uma macarronese que é a melhor do Brasil, do mundo", disse a participante.

Em uma participação no programa "Mais Você", em março de 2015, a mãe de Ludmilla falou sobre a paixão dela pelo prato (veja receita completa abaixo). "Se deixar, ela come todos os dias. Quando chega de viagem, então... 'Mãe, faz macarronese?'", contou Silvana Oliveira.

Receita brasileira que vai bem no verão

É uma receita simples e muito comum nos lares brasileiros, como explica o chef paulista Melchior Neto.

"Tenho certeza que a receita é brasileira. A minha avó fazia. Basicamente leva aquilo que a gente tem em casa. Uma massa, queijo, presunto, maionese, milho, ervilha, mas você pode adaptar com o que tiver na dispensa e até com o que sobrou do final de ano como frutas secas, palmito, azeitona etc", comenta.

O chef diz ainda que o prato é servido frio e é uma ótima opção para o verão. "Você pode levar no cooler junto com suas bebidas para a praia e já é um almoço".

Confira a receita de macarronese que Silvana ensinou no "Mais Você":

Ingredientes

Frango:

  • 750g de peito de frango sem osso
  • 4 dentes de alho amassados
  • Suco de 1 limão
  • Orégano, sal e pimenta-do-reino a gosto
  • ¼ xícara (chá) de óleo
  • 1 cebola ralada
  • 1 tablete de caldo de frango
  • 2 folhas de louro
  • 500ml de água

Macarrão:

  • ½ kg de macarrão padre nosso
  • 2 colheres (sopa) de óleo
  • 1tablete de caldo de frango
  • ½ colher (sopa) de sal
  • 2 folhas de louro

Montagem

  • 400g de presunto cortado em cubinhos
  • 1 lata de ervilha escorrida
  • 1 lata de milho-verde escorrido
  • 300g de azeitona verde picadinha
  • Coentro picadinho
  • 30 ovos de codorna cozidos
  • 1kg de maionese

Modo de preparo

Frango:

1 - Em uma tigela coloque 750 g de peito de frango sem osso e tempere com 4 dentes de alho amassados, suco de 1 limão, orégano, sal e pimenta-do-reino a gosto.

2 - Coloque em uma a de pressão ¼ xícara (chá) de óleo e refogue 1 cebola ralada. Adicione o peito de frango temperado, 1 tablete de caldo de frango, 2 folhas de louro, 500 ml de água, tampe a a e, após pegar pressão, conte 15 minutos. Desligue o fogo e retire a pressão da a. Abra a a e com uma colher misture o frango até desfiar. Reserve.

Macarrão:

Em uma a com bastante água fervente coloque ½ kg de macarrão padre nosso, 2 colheres (sopa) de óleo, 1 tablete de caldo de frango, ½ colher (sopa) de sal, 2 folhas de louro e deixe cozinhar até o macarrão ficar 'al dente'. Retire do fogo e escorra.

Montagem

Em uma assadeira, coloque o macarrão cozido 'al dente', o frango desfiado (reservado acima), 400g de presunto cortado em cubinhos, 1 lata de ervilha escorrida, 1 lata de milho verde escorrido, 300g de azeitona verde picadinha, coentro picadinho, 30 ovos de codorna cozidos, 1 kg de maionese e misture bem. Sirva em seguida.