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

Omelete especial com queijo de coalho: receita é sucesso em bar carioca

Bruno Calixto

Colaboração para Nossa

14/05/2022 04h00

Para uma omelete fazer sucesso num boteco, a receita precisa fugir do básico. No carioca Bar do Tino, a cozinheira Elani Santana combina dois tipos de queijo — parmesão e coalho — em abundância.

A pedida, chamada de "vixe mainha", ganha mais cor com cheiro-verde (mistura de salsinha e cebolinha) e orégano. O o a o foi compartilhado com Teresa Cristina, que mostra as suas habilidades ao público no episódio de "Botequim da Teresa" com a convidada Fabi Alvim, medalhista olímpica de vôlei.

Bar do Tino - Reprodução - Reprodução
Imagem: Reprodução

Além da omelete diferentona, o Bar do Tino aposta em fartas porções de carnes assadas no bafo. Quem quer provar as especialidades chega com fome ao restaurante.

Localizada no Morro dos Prazeres, acima do boêmio bairro de Santa Teresa, a casa tem uma das mais altas vistas da favela. Para chegar até lá, turistas fazem uma trilha de dez minutos no meio da mata.

Para Teresa, o clima do estabelecimento é uma atração à parte:

O Bar do Tino é tão família que os clientes fazem questão de ter um registro com os anfitriões da casa, o casal Severino Alves e Eleni Santana".

Aprenda receita
com dicas de Teresa

Teresa Cristina - Fabi Alvim e omelete - FGranatieri/UOL - FGranatieri/UOL
Omelete do Bar do Tino
Imagem: FGranatieri/UOL

INGREDIENTES

  • 2 ovos
  • 1 colher de chá de cheiro verde (salsinha e cebolinha)
  • 1 colher de sopa de queijo parmesão ralado
  • 100 gramas de queijo coalho ralado
  • Sal e orégano a gosto
  • 1 colher de sopa de azeite

MODO DE PREPARO

Bata os ovos por dois minutos numa tigela com garfo. Acrescente o cheiro verde, o queijo parmesão, o queijo de coalho e o sal e orégano a gosto. Misture.

Unte a frigideira. "Espalhe o azeite com pincel ou papel toalha para o omelete não grudar".

Coloque a mistura e esperar dourar embaixo. "Para ver o ponto, observe a borda. Não pode deixar queimar, mas deve ficar tostadinha".

Quando ficar firme, vire o omelete do outro lado. Assim que atingir o ponto, servir com salada de folhas, legumes cozidos, tomate e azeitonas.

Sextas de samba

Botequim da TEresa - Zo Guimaraes/UOL - Zo Guimaraes/UOL
Imagem: Zo Guimaraes/UOL

O "Botequim da Teresa", que vai ao ar todas as sextas, é o programa perfeito para quem ama boa música e papos interessantes. Teresa Cristina resgata a história de bares tradicionais do Rio de Janeiro, faz receitas clássicas de cada um deles e recebe convidados para conversas descontraídas. Assista à nova temporada no site de Nossa, no UOL Play ou no YouTube de Nossa (inscreva-se e receba atualizações fresquinhas).