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

Tem alface no churrasco! Prove o jeito coreano de servir carnes da grelha

De Nossa

15/12/2021 04h00

Da arte de assar carnes na brasa os coreanos entendem. Mas não vá achando que eles fazem tudo igual aos brasileiros. As churrascarias, por exemplo, geralmente têm um aparelho acoplado à mesa para que o próprio cliente leve os cortes à grelha.

Bifões de picanha ou de ancho também não são comuns. A tradição pede lâminas finas — quase carpaccios — de costela, pancetta e outras carnes. Todas elas são marinadas rapidamente numa mistura que contém itens como shoyu e pasta de pimenta e estagiam na churrasqueira num piscar de olhos.

No primeiro episódio da temporada de Verão de "Vai Ter Churras", série de Nossa, o craque Bruno Salomão é apresentado a tudo isso por Sae Kim, coreano que mantém no bairro do Bom Retiro, em São Paulo, o restaurante New Shin La Kwan. A dupla prepara a costela bovina e mostra qual o jeito típico de comer.

Vai Ter Churras | Churrasco coreano - Mariana Pekin/UOL - Mariana Pekin/UOL
Costela, folhas e acompanhamentos: tudo na palma da mão
Imagem: Mariana Pekin/UOL

Farofa e maionese? Nem pensar

O arroz, a salada de maionese, a vinagrete e a farofa ficam de lado quando a ideia é colocar as tradições coreanas em prática. No país asiático, os acompanhamentos são chamados de banchan e os fermentados estão entre os pratinhos mais importantes colocados sobre a mesa.

O mais representativo deles é o kimchi, conserva picante de legumes como acelga. Também marca presença a pasta fermentada de soja chamada de missô.

As folhas verdes aparecem para balancear os sabores intensos. Pode ser alface, kinip (folha de gergelim), cebolinha e folha de crisântemo comestível. Arroz e cogumelos também são bem-vindos.

A ideia principal é usar as mãos e os palitinhos (jeotgarak) para acomodar os pedaços de churrasco e os acompanhamentos dentro das folhas e formar a trouxinha que eles chamam de ssam.

Com o "pacotinho" feito, a graça é colocar tudo na boca de uma só vez e sentir a explosão de sabores picantes, ácidos, doces, salgados e umami.

Fique ligado!

Confira todas as sextas um novo episódio no site de Nossa, no UOL Play ou no YouTube de Nossa (inscreva-se já para receber as atualizações fresquinhas). E acompanhe mais conteúdos no Instagram de Nossa. Assista também às três primeiras temporadas e veja Bruno Salomão ensinar os conceitos básicos para os churrasqueiros de primeira viagem e muitas receitas saborosas.