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

Viajar para comer: conheça festivais gastronômicos para todos os paladares

Do Uol

14/09/2019 04h00

Quando se planeja uma viagem, é muito difícil não levar em conta um roteiro gastronômico. Pensando nisso, a Booking.com analisou suas propriedades em mais de 150.000 destinos em 229 países para recomendar festivais sobre culinária dos mais diversos gostos.

As sugestões am por uma das maiores festas sobre pizza na Itália, um dos grandes festivais de chocolate do mundo e opções para experimentar insetos um tanto quanto "estranhos". As atrações agradam desde o perfil mochileiro até quem curte uma viagem em família. Veja o que se encaixa no seu roteiro ideal:

Ribfest - Ontário, Canadá

Ribfest - Ontário, Canadá - Divulgação/Booking.com - Divulgação/Booking.com
Imagem: Divulgação/Booking.com

Os apaixonados por carne podem sempre se esbaldar no "Maior Festival de Costela" do Canadá, o "Ribfest", que fica em Spencer Smith Park, em Burlington, Ontário. Em sua 22ª edição, o festival de 2019 contou com a participação dos 19 melhores mestres na arte de fazer costela de toda a América do Norte.

Esta pode ser uma oportunidade para se empanturrar de carne e também apreciar uma cerveja gelada. Aliás, enquanto faz a digestão, você pode curtir as bandas locais que se apresentam em três palcos, além de fogos de artifício e concursos de comida com a participação de jurados famosos.

Napoli Pizza Village Festival - Napóles, Itália

Napoli Pizza Village Festival - Napóles, Itália - Divulgação/Booking.com - Divulgação/Booking.com
Imagem: Divulgação/Booking.com

Mais de 1 milhão de apaixonados por pizza de todo o mundo são esperados na edição deste ano do famoso "Napolli Pizza Village Festival", em Nápoles, a terra natal da pizza. O festival acontece entre os dias 13 e 22 de setembro deste ano.

Além de saborear a pizza mais famosa do mundo, os visitantes também terão a chance de participar de workshops oferecidos por mestres da pizza de todos os cantos do planeta, conferir exposições, shows e até participar de concursos.

Bug Fest - Carolina do Norte, EUA

Bug Fest - Carolina do Norte, EUA - Getty Images - Getty Images
Imagem: Getty Images

Se você faz o estilo "estômago de avestruz" e não tem medo de encarar pratos incomuns, o "Bug Fest" é o festival para você. O evento acontece no dia 21 de setembro de 2019 no Museu de Ciências Naturais da Carolina do Norte, nos Estados Unidos, e conta com pratos feitos à base de insetos preparados por chefs da região, além de exposições, atividades, apresentações educativas e workshops.

Salon du Chocolat - Paris, França

Salon du Chocolat - Paris, França - Manon Gustave / 500px - Manon Gustave / 500px
Imagem: Manon Gustave / 500px

O "Salon du Chocolat" é o destino dos sonhos de qualquer chocólatra. O festival acontece entre os dias 30 de outubro e 3 de novembro, no Paris Expo Porte de Versailles, e neste ano celebra sua 25ª edição.

O festival, que conta com a participação de 60 países, reúne sabores internacionais e as últimas tendências do universo do chocolate em suas exposições, atividades, competições, workshops, aulas de culinária com chefs renomados, esculturas de chocolate e até mesmo um desfile de moda envolvendo o doce.

Tokyo Ramen Show , Japão

Tokyo Ramen Show , Japão - Divulgação/Booking.com - Divulgação/Booking.com
Imagem: Divulgação/Booking.com

Com duração de onze dias entre o final de outubro e o começo de novembro, o festival "Tokyo Ramen Show" celebra neste ano a sua 10ª edição. No Parque Olímpico de Komazawa, o evento é dedicado aos amantes do macarrão oriental e apresenta as delícias oferecidas por 30 vendedores de todo o Japão e as diferentes iguarias regionais do ramen.

Tunarama Festival - Port Lincoln, Austrália

Tunarama Festival - Port Lincoln, Austrália - Divulgação/tunarama.net - Divulgação/tunarama.net
Imagem: Divulgação/tunarama.net

O "Tunarama Festival", em Port Lincoln, Austrália, acontece todos os anos e é lar de uma competição diferente: o arremesso de atum. Mas não é só de bizarrice que se faz o evento, que é celebrado durante o feriado "Australia Day", em janeiro.

Os visitantes podem aproveitar os produtos fresquinhos dos mercados locais, curtir música ao vivo e jantares com ingredientes produzidos localmente, além de opções de frutos do mar frescas, sem mencionar os desfiles temáticos de atum.