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

Descubra os queijos de cabra e aprenda a usá-los no dia a dia

Fernanda Meneguetti

do UOL, em São Paulo

19/05/2015 16h46

Quem já provou leite de cabra notou a riqueza e a peculiaridade do sabor –impossível de ser disfarçado. Os queijos feitos com ele não poderiam seguir outro caminho. Com sua cor branca pura, podem ser cremosos, quebradiços, macios, resistentes.

Do ponto de vista nutricional, possuem menos colesterol, menos lactose e menos proteínas do que os laticínios de vaca e, por isso mesmo, são mais tolerados pelo organismo. Vale guardá-los bem embalados na geladeira, de preferência na gaveta de legumes, e retirá-los uma hora antes de serem degustados (assim se obtém o melhor da textura e do aroma).

Na hora de harmonizá-lo, dê preferência a vinhos brancos. E anote: castanhas em geral, mel, frutas secas e geleias como a de maracujá são igualmente bons companheiros desses queijinhos.

Bruno Cabral, da Mercearia Mestre-Queijeiro, especializou-se na produção de queijos artesanais na Espanha e, no Brasil, colocou o conhecimento em prática: “Faz pouco tempo que se fabrica queijo de cabra por aqui, portanto a produção ainda é limitada. As pessoas estão começando a conhecer mais, a compará-lo com o de vaca, que tem maior variedade no mercado. Ele agrada aos que gostam de cremosidade e os que apreciam diferentes tipos de queijo”, comenta.

Heloisa Collins, por sua vez, é uma das únicas produtoras de queijo de cabra reconhecida pela inspeção sanitária do Governo de São Paulo. Há 20 anos ela começou os primeiros testes, servindo para amigos e para a família e, desde 2009, mantém o Capril do Bosque. Em Joanópolis, a cerca de uma hora de São Paulo, ela prepara oito tipos de queijos caprinos e os serve em receitas e degustações num bistrô familiar.

Com produtos disponíveis no novíssimo Eataly, assim como em restaurantes celebrados da capital paulista – caso do Tuju, do Fasano, do Attimo e do Carlota, entre outros, ela afirma: “O queijo de cabra pode ter sabores e consistências distintas e ser usado em tudo que é tipo de receita: do pão de queijo a cheesecake, ando por risotos, saladas, tortas e tartines”, garante Heloisa. Conheça os mais famosos;