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

NBA: Como pressão do elenco fez Boston Celtics contratar um técnico negro

Ime Udoka, técnico principal do Boston Celtics, dá instruções durante jogo da pré-temporada 2021-22 - Brian Babineau/NBAE via Getty Images
Ime Udoka, técnico principal do Boston Celtics, dá instruções durante jogo da pré-temporada 2021-22 Imagem: Brian Babineau/NBAE via Getty Images

Do UOL, em São Paulo

09/10/2021 04h00

A escolha de Ime Udoka como novo técnico do Boston Celtics ou por suas qualificações para o cargo, é claro, mas também pela representatividade. Em uma NBA na qual os treinadores negros são apenas um terço do total, a pressão dos jogadores foi acatada pela direção da franquia.

Udoka foi anunciado ainda em junho e já comanda o time na pré-temporada, mas a influência dos jogadores na escolha do treinador só foi revelada há duas semanas, pelo ala Jaylen Brown. "Eles [os diretores] concordaram e conversaram sobre isso, mas [a opção por Udoka] não é apenas por ele ser afro-americano. Ele é mais do que qualificado", diz o jogador, que está em sua sexta temporada com os Celtics.

A NBA é composta por 30 times, mas tem apenas 11 técnicos negros (36,6% do total). Em termos globais, este percentual não seria tão desigual, afinal, a população negra dos Estados Unidos gira em torno dos 14%. Acontece que, no recorte da NBA, a proporção de jogadores negros é de cerca de 75% há pelo menos dez anos (segundo o site especializado statista). Por que, então, em um mesmo universo (o do basquete profissional), três em cada quatro atletas são negros mas só um em cada três treinadores são negros? É a disparidade que Jaylen Brown quer ajudar a combater.

"Esta representação é importante. E dá aos profissionais os e recursos que elas precisam e merecem ter, especialmente a ex-jogadores. Eles merecem ter um assento na mesa também, especialmente na comissão técnica, em cargos de direção, até como donos de equipes", afirma o jogador.

Udoka é ex-jogador da NBA, foi assistente de Gregg Popovich por sete temporadas no San Antonio Spurs, ou um ano no Philadelphia 76ers e na temporada ada teve a missão de melhorar a defesa do Brooklyn Nets —no que foi muito bem, pois o time excedeu as expectativas neste quesito. Agora, assume como treinador principal pela primeira vez.

Ime Udoka nos Celtics é relevante não apenas pela representatividade na NBA, mas, também, na cidade de Boston, que por muito tempo foi considerada "a mais racista dos EUA". Uma pesquisa de 2017 mostrou que 54% das pessoas negras se sentem indesejadas na cidade; e um estudo do jornal Boston Globe revelou, entre outros dados, que a média de patrimônio de uma família branca na cidade (US$ 250 mil) é 31 mil vezes maior do que o de uma família negra (apenas US$ 8).

A infâmia está refletida também no esporte. Até mesmo o maior atleta a jogar por Boston, Bill Russell, já disse que a cidade para quem deu 11 anéis da NBA era "um mercado de pulgas do racismo". No beisebol, o Boston Red Sox foi o último time da MLB a aceitar jogadores negros e, em 2017, seus torcedores aram um jogo todo gritando "nigger" (o insulto racial mais ofensivo para os americanos) para um atleta adversário.

É neste contexto que Jaylen Brown exalta a chegada de Udoka. "Seja porque tentaram calar a nós [jogadores] ou porque [os diretores do Celtics] realmente acreditaram que era a coisa certa a fazer, isso não importa para mim. A representatividade é o mais importante", afirma.

Os Celtics de Udoka, Brown, Jayson Tatum e cia. abriu sua pré-temporada na NBA vencendo o Orlando Magic na última segunda-feira (4) e tem novo teste às 20 horas (de Brasília) deste sábado (9), contra o Toronto Raptors. A temporada regular para a equipe começa no dia 20, contra o New York Knicks.