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

Petisco de banana-da-terra com salmão é escolha certa para o verão

Disco de banana frito coberto por tartare de salmão - Arquivo pessoal
Disco de banana frito coberto por tartare de salmão Imagem: Arquivo pessoal

Gabrielli Menezes

De Nossa

28/10/2020 04h00

Marina Zaverucha

Marina Zaverucha

QUEM É

Formada em publicidade, ela trabalhava desenvolvendo novas comidinhas para uma grande marca até resolver estudar gastronomia em NY, há cinco anos. Desde então, Marina abastece o feed do Instagram com saborosas receitinhas.

Você já foi em algum restaurante, comeu algo muito gostoso e pensou: bem que eu gostaria de fazer isso em casa? Essa vontade sempre a pela cabeça de Marina Zaverucha.

Quem sai ganhando são seus mais de 20 mil seguidores, que acompanham seu dia a dia na cozinha desde que a publicitária decidiu morar em Nova Iorque, em 2016, para estudar gastronomia no International Culinary Center.

O meu Instagram é bem informal. Posto receitas que estou com vontade de comer sem muita produção. Só tento cozinhar sempre de dia para fotografar com luz natural".

Uma das comidinhas que Marina dividiu com o público — e apresenta também em Nossa — é inspirada num prato de um de seus restaurantes favoritos, o Barú Marísqueria, do colombiano Dagoberto Torres.

Trata-se de patacones, disquinhos de banana-da-terra verde amassados e fritos, coroados por tartare de salmão.

Fresca, a receita tem cara de praia e leva ingredientes que Marina, como boa recifense que é, já está acostumada a trabalhar, como coentro e a própria a banana e o pescado.

"Acho um aperitivo lindo, alegre, charmoso, fácil de fazer e, ainda, versátil. Dá para substituir o salmão por atum, peixe branco ou o pescado que estiver fresco. Batata-doce também pode funcionar no lugar da banana".

Confira a receita completa:

Patacones de banana-da-terra verde com tartare de salmão

Dificuldade Fácil
4 porções
20 min
Ver receita completa

Unindo paixão e profissão

Foi trabalhando como publicitária, desenvolvendo produtos gastronômicos para uma grande marca, que Marina sentiu a necessidade de se aprofundar num tema que sempre lhe apeteceu: a gastronomia.

No início, tocou em paralelo o curso e o trabalho por um ano, até decidir embarcar rumo aos Estados Unidos, onde pôde se especializar e estagiar no Perry St., uma das casas do renomado chef franco-americano Jean Georges Vongerichten.

Quando voltou a São Paulo, trabalhou na confeitaria La Vie en Douce e no tradicional Buffet França. Também chegou a abrir uma marca que levava o seu nome e vendia menus por encomenda.

Foi aí que percebi que acabei virando uma gerente comercial e de logística. Tinha me desconectando da cozinha".

Ao lado de uma amiga, ela decidiu começar a criar conteúdo para marcas, produzindo receitas e fazendo food styling. "Consegui unir publicidade e gastronomia", conta, feliz.