;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Executiva do Twitter que postou foto em que dormia no trabalho é demitida

A executiva chegou a postar em novembro uma imagem onde aparece dormindo no chão do escritório  - Reprodução/Redes Sociais
A executiva chegou a postar em novembro uma imagem onde aparece dormindo no chão do escritório Imagem: Reprodução/Redes Sociais

Colaboração para o UOL

27/02/2023 12h59

O empresário Elon Musk demitiu neste sábado (5) a diretora de gerenciamento de produtos do Twitter, Esther Crawford, que supervisionava a introdução da cobrança pela verificação de contas, o Twitter Blue.

O que aconteceu:

  • A executiva havia compartilhado na rede, em novembro, uma imagem que mostrava ela deitada sobre o chão do escritório, em um saco de dormir.
  • Além da executiva, Elon Musk demitiu outros 200 funcionários, o equivalente a 10% da força de trabalho de 2 mil colaboradores. Antes dele assumir a empresa, o Twitter possuía 7,5 mil pessoas em seus quadros.
  • "Quando sua equipe está correndo contra o relógio para cumprir prazos, às vezes você #DormeOndeVocêTrabalha", escreveu ela, ao compartilhar um tuíte do colega Evan Jones, com a sua imagem dormindo.

Crawford publicou um post ontem na rede, mas não confirmou sua demissão. Ela escreveu que estava "profundamente orgulhosa" de sua equipe e criticou pessoas que zombaram de suas conquistas.

Musk disse em dezembro que seu esforço de corte de custos significava que o Twitter "não estava mais no caminho certo para a falência", mas ele continuou a tomar medidas para reduzir gastos em 2023.

Segundo o jornal norte-americano The New York Times, os cortes afetaram gerentes de produto, cientistas de dados e engenheiros que garantiam que o site funcionasse com eficiência.

Contas falsas

O serviço de do Twitter teve um relançamento problemático em novembro, depois que alguns usuários se aproveitaram do Twitter Blue para criar uma série de contas falsas em nome de empresas renomadas e personalidades famosas.

A Nintendo, a empresa farmacêutica Eli Lilly e o político americano Ted Cruz estavam entre as empresas e figuras públicas que foram "clonadas" por imitadores, que pagaram por contas com o selo de verificação azul.

O Twitter Blue foi relançado novamente em dezembro e, segundo o site de notícias The Information, tem 180 mil s nos EUA, em comparação com uma base global de usuários mensais de mais de 250 milhões de pessoas.

Segundo apurou o jornal inglês The Guardian, as perdas de empregos ocorreram em um cenário de incerteza financeira no Twitter, que vem apresentando perdas históricas e luta para gerar o fluxo de caixa necessário para pagar as dívidas significativas que herdou após a perda de R$ 229,19 bilhões de Musk ao assumir a empresa.

O financiamento do acordo incluiu por volta de R$ 67 bilhões em dívidas, que agora estão no balanço patrimonial do Twitter e custam mais de R$ 5,2 bilhões por ano para pagar, diz o jornal britânico. O Twitter fez o primeiro pagamento trimestral dessa dívida em janeiro, mas analistas alertaram que Musk precisa dar uma guinada nos negócios para tornar a dívida sustentável no longo prazo.