;(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; // 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(); })();

Topo

Bolo de chocolate com casquinha crocante da Isa Scherer: 'Tem sabor de férias'

26/01/2023 11h00

Ah, as lembranças de férias de verão! Para a atriz e apresentadora Isa Scherer, entre as recordações mais afetivas estão as da casa de praia da avó junto com os primos.

"Lembro de todos ali, uma festa, e todo final de tarde rolava um bolinho. O meu favorito — e acho que de todo mundo — era o de chocolate com casquinha crocante", conta Isa.

Bolo de chocolate do programa À Moda de Isa, com Isa Scherer - Keiny Andrade/UOL - Keiny Andrade/UOL
Imagem: Keiny Andrade/UOL

E é essa a receita principal que ela ensina neste episódio da temporada especial de verão do programa "À Moda da Isa" (veja todos os episódios no YouTube de Nossa e se inscreva para não perder os próximos!).

A massa do bolo é fácil e tem o 'toque secreto da vovó', um pouquinho de café na mistura.

Enquanto ensina o o a o (veja no vídeo acima), Isa também ensina outro truque, desta vez herdado da mãe:

Seu segredinho é untar a forma com farinha de rosca. Fica uma casquinha, uma delícia"

Calda crocante de chocolate

O pulo do gato neste bolo de chocolate da Isa Scherer é a cobertura. "Sou do time casquinha crocante, e vou te ensinar uma que fica perfeita", diz. Veja como é fácil:

Nesta etapa, Isa revela outo segredinho: antes de colocar a calda, ela já fatia o bolo na forma e faz alguns furinhos nele.

Para a calda entrar bastante no bolo e ele ficar crocante não só em cima, mas por dentro também. Fica tudo de bom!"

Picolé caseiro

Além do bolo de chocolate, outra receita que é um clássico de férias de verão na família de Isa é o picolé de leite condensado com guaraná, que ela considera a receita mais fácil do mundo:

Quando minha mãe era criança, não tinha vendedor de picolé na praia, então meu avô sempre fazia para eles este picolé, que virou uma tradição"

No episódio, Isa utiliza forminhas especiais de picolé para geral. Você não tem? Pode repetir a tática do avô da atriz: usar forminhas de gelo. "Ele colocava palitos de dente para segurar, e era assim que a família toda comia", diz.

Café gelado

O café dalgona, uma versão espessa e cremosa do café com leite, virou um hit na internet, especialmente durante a pandemia.

Ele é a inspiração para o café gelado que fecha este programa "À Moda da Isa" — mas com os toques saborosos da atriz, como o doce de leite e as raspas de laranja:

Fique ligado!

Isa Scherer, À Moda de Isa - Keiny Andrade/UOL - Keiny Andrade/UOL
Imagem: Keiny Andrade/UOL

A temporada de verão do "À Moda de Isa" vai ao ar todas as quintas-feiras, às 11 horas, no UOL Play e no YouTube de Nossa. Ela traz receitas de pratos principais e acompanhamento perfeitos para a estação e também, em cada episódio, um drinque para refrescar. Gostou? Vale maratonar no YouTube a primeira temporada, que inclui os rolês turísticos mais bacanas para fazer em São Paulo, como a visita ao Centro Histórico, um eio na Japan House e um tour pela arte de rua do Beco do Batman.