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

#FicaEmCasa e aprenda a fazer churrasco - até sem churrasqueira

Aprender mais sobre churrasco e colocar em prática (até no forno) é uma bela distração no isolamento - Emerson Vieira/Unsplash
Aprender mais sobre churrasco e colocar em prática (até no forno) é uma bela distração no isolamento
Imagem: Emerson Vieira/Unsplash

Juliana Simon

De Nossa

24/03/2020 04h00

Como já abordamos aqui em Nossa, cozinhar pode ser um atempo e uma necessidade durante o isolamento social recomendado no período do coronavírus.

Para os apaixonados por churrasco, também é possível investir nessa paixão e até aproveitar o tempo em casa para saber ainda mais sobre o mundo de carnes.

Cursos na web

Aulas online e muita leitura para dominar as grelhas - Andrik Langfield/Unsplash - Andrik Langfield/Unsplash
Aulas online e muita leitura para dominar as grelhas
Imagem: Andrik Langfield/Unsplash

São diversos os cursos online que prometem tornar qualquer pessoa um grande mestre churrasqueiro e até mesmo referências na área estão apostam nessa forma de ensino. Conheça alguns deles:

Em vídeos:

Em e-books:

Influencers churrasqueiros

Redes sociais ajudam a conhecer mais sobre carnes e diferentes receitas - Emerson Vieira/Unsplash - Emerson Vieira/Unsplash
Redes sociais ajudam a conhecer mais sobre carnes e diferentes receitas
Imagem: Emerson Vieira/Unsplash

Outra forma de aprender a operar as grelhas é acompanhar a infinidade de dicas dos youtubers e instragramers da área.

Alguns canais imperdíveis são:

Isolado, mas sem churrasqueira

Não precisa de churrasqueira para praticar desde já - Andrik Langfield/Unsplash - Andrik Langfield/Unsplash
Não precisa de churrasqueira para praticar desde já
Imagem: Andrik Langfield/Unsplash

Não a sem carne, mas também não conta com aquela estrutura churrasqueira em casa? Sem problema. As redes sociais também surgem como forte aliado para quem conta com fogão, chapa ou pequenas churrasqueiras.

A assadora Paula Labaki, por exemplo, compartilha algumas boas dicas:

  • todos os cortes podem ser feitos ou no forno ou no fogão. Por exemplo maminha, peito, costela melhor forno, picanha, contrafilé, filé na frigideira de ferro;
  • para a carne com gostinho de churrasco, você pode usar uma chapa ou a de ferro, o que vai ajudar na formação da crosta e dos sabores;
  • para deixar a carne suculenta, sempre esteja atento à temperatura. Toda a carne muito ada vai ficar mais seca, procure retirar no ponto.
  • alguns cortes pedem o inicio com alumínio, mas sempre finalize sem, para dourar bem. Os de forno o ideal é sempre começar pelo alumínio.

Além disso, vale seguir as receitas que a chef está compartilhando uma série de receitas fáceis em seu Instagram.

Entre elas uma maminha com cebola para nenhum carnívoro botar defeito:

Para quem conta com uma chapa em casa, o canal BBQ Em Casa já deu dicas preciosas para um preparo sem fumaça:

Porém, se você é um adepto das fritadeiras elétricas - e da culinária sem qualquer complicação -, tem receita criativa até mesmo para as queridas airfreyers, como uma picanha feita no aparelho.