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

Coluna

Campo Livre


Campo Livre

Fogaça: A festa do GreNal na final da Copinha

Grêmio elimina Oeste na semifinal da Copa São Paulo - Leonardo Benhossi/Divulgação/FPF
Grêmio elimina Oeste na semifinal da Copa São Paulo Imagem: Leonardo Benhossi/Divulgação/FPF

23/01/2020 12h44

Quando em um planalto às margens do rio Tietê, o cacique Tibiriçá, líder de uma tribo Tupiniquim, entrou em acordo com os líderes jesuítas Manuel da Nóbrega e José de Anchieta para que esses realizassem uma missa e convertessem a sua tribo ao catolicismo, ele não fazia a menor ideia do que aconteceria naquele espaço 466 anos depois.

O ritual de catequese realizado por um português e um espanhol no dia 25 de janeiro de 1554 é considerado o ato fundador da cidade de São Paulo. Naquele exato momento, muitas léguas ao sul, índios Carijós dominavam soberanos a faixa litorânea de um Brasil desconhecido e sem limites.

Pois algumas décadas depois da missa de São Paulo (1617), escravagistas portugueses enviaram dois missionários ao Sul para trazerem "índios trabalhadores" para as fazendas de Santos, São Vicente e São Paulo. Os padres João de Almeida e João Fernandes chegaram até as margens do rio Gravataí com sua expedição.

Em seus relatos, os missionários contam que não conseguiram atravessar aquele "rio grande do sul", e voltaram para São Paulo com 150 escravos Carijós, os quais muitos morreram no caminho.

Porto Alegre só foi existir muito tempo depois (1772), fruto de uma expedição de açorianos e outros grupos étnicos. O futebol, esporte que tanto nos apaixona, é uma invenção muito mais recente do que a fundação de São Paulo ou a excursão dos missionários escravagistas.

E como em um fluxo contrário ao decorrer da história do Brasil, jovens atletas representantes de clubes de futebol de Porto Alegre durante muitos anos tentaram dominar uma competição esportiva criada para - justamente - celebrar o aniversário daquela missa fundadora de São Paulo. Em vão.

Somente em 2020, Grêmio e Internacional finalmente conseguiram chegar à final da Copa São Paulo de Futebol ao mesmo tempo, transformando uma festa paulistana em um momento 100% gaúcho.

Liderados pelo meia Diego Rosa, os tricolores são levemente favoritos: possuem maiores destaques técnicos, parecem mais entrosados e demonstraram maior superioridade na competição. Do outro lado, o destaque da seleção brasileira Praxedes lidera os colorados como guerreiros: incansáveis, organizados e determinados.

Se desde 2011 a final não era disputada por dois times de fora do Estado de São Paulo, esta será apenas a quinta vez que um paulista não chega para disputar o título. Sem falar que é o primeiro GreNal em final da competição.

Nada simboliza mais as virtudes e os defeitos dos gaúchos que o GreNal. Se os missionários portugueses não conseguiram cruzar o "rio grande", estes jovens gremistas e colorados invadiram a Paulicéia, e, no dia que a cidade de São Paulo cumprirá 466 anos, ela será mais gaúcha do que nunca.

Uma verdadeira festa Carijó no terreno dos Tupiniquins. Viva o futebol brasileiro!

Campo Livre