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

Bar em São Paulo está entre 100 melhores do mundo; primeiro lugar é inglês

Drinque Camp Sour da carta do Tan Tan Noodle Bar, 87º melhor bar do mundo em 2021: Mix de brandy de Jerez, cacau, limão e bitter de chocolate - Reprodução
Drinque Camp Sour da carta do Tan Tan Noodle Bar, 87º melhor bar do mundo em 2021: Mix de brandy de Jerez, cacau, limão e bitter de chocolate Imagem: Reprodução

De Nossa

08/12/2021 11h17

O Tan Tan Noodle Bar, em Pinheiros, bairro da zona oeste de São Paulo, foi eleito o 87º melhor bar do mundo em 2021 pela premiação de prestígio "The World's 50 Best Bars" que, apesar do título, destaca as 100 casas mais inovadoras e deliciosas no globo na atualidade.

Descrito como um "bar underground seriamente descolado, que traz um toque da cultura de bares do Japão a São Paulo", o Tan Tan se destacou tanto pela carta de drinques quanto pelo cardápio.

O júri salientou a comida saborosa com oferta de macarrões, bolinhos e quitutes ideais para acompanhar uma bebida, como o sanduíche katsu sando, feito com porco empanado.

Já os coquetéis do Tan Tan foram considerados criativos e cheios de sabor, especialmente o Yo Yo, que mistura shochu (um destilado de arroz, cevada ou batata doce), com amaro (um tipo de licor) de alcachofra, vermute seco com chocolate e bitters de limão.

Outro drinque bem avaliado foi o Tan Tan Club, com brandy de jerez com vermute doce, bitters de laranja e abacaxi. O preço médio por bebida é de R$ 39,25.

Tan Tan Noodle Bar, em São Paulo, tem menu e cartas de inspiração asiática - Reprodução - Reprodução
Tan Tan Noodle Bar, em São Paulo, tem menu e cartas de inspiração asiática
Imagem: Reprodução

Cenário mundial

Os dois primeiros colocados da lista dos 100 mais são casas londrinas, que solidificaram a tradição inglesa de bares. Na liderança ficou o Connaught Bar, que se destacou pelo seu Dry Martini "perfeito". Em seguida, veio o Tayer + Elementary, que foi considerado como "realeza de baristas" por seus coquetéis preparados em segundo e menu que muda toda semana.

O bar Paradiso, de Barcelona, na Espanha, levou o terceiro lugar com sua carta de coquetéis que brilham no escuro e o drinque Great Gatsby, inspirado no personagem de F. Scott Fitzgerald. Em quarto está o The Clumsies, em Atenas, na Grécia, considerado hospitaleiro e brilhante na arte de oferecer bebidas que suscitam emoções como felicidade ou ternura.

Fechando o top 5, o argentino Florería Atlántico, em Buenos Aires, que também levou o prêmio de Melhor Bar da América do Sul, foi elogiado por sua capacidade de misturar referências dos imigrantes europeus com os nativos indígenas do país na composição de drinques que despertam a familiaridade no cliente.

Os bares americanos ainda fizeram bonito por toda a lista com 11 colocações, à frente de outros países de destaque como Reino Unido, com 8; México, com 8; e China, com 9.

Veja os melhores de cada continente em 2021:

Melhor Bar da Europa: Connaught Bar, Londres (Reino Unido)

Melhor Bar da América do Norte: Licorería Limantour, Cidade do México (México)

Melhor Bar da Ásia: Coa, Hong Kong (China)

Melhor Bar da América do Sul: Florería Atlántico, Buenos Aires (Argentina)

Melhor Bar da Oceania: Maybe Sammy, Sydney (Austrália)

Melhor Bar do Oriente Médio e África: Zuma, Dubai (Emirados Árabes Unidos)