BR112021004736A2 - respostas progressivas de api - Google Patents

respostas progressivas de api Download PDF

Info

Publication number
BR112021004736A2
BR112021004736A2 BR112021004736-0A BR112021004736A BR112021004736A2 BR 112021004736 A2 BR112021004736 A2 BR 112021004736A2 BR 112021004736 A BR112021004736 A BR 112021004736A BR 112021004736 A2 BR112021004736 A2 BR 112021004736A2
Authority
BR
Brazil
Prior art keywords
content
content items
content item
response
fragments
Prior art date
Application number
BR112021004736-0A
Other languages
English (en)
Other versions
BR112021004736A8 (pt
Inventor
John Anthony Debay
Asal Abdelrahman
Amandeep Singh Grewal
Reza Mohamed Ekbal Lotun
Nolan O'Brien
Original Assignee
Twitter, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Twitter, Inc. filed Critical Twitter, Inc.
Publication of BR112021004736A2 publication Critical patent/BR112021004736A2/pt
Publication of BR112021004736A8 publication Critical patent/BR112021004736A8/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/44Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/538Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Library & Information Science (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

RESPOSTAS PROGRESSIVAS DE API. A presente invenção refere-se a método, sistema e dispositivos de (produtos de programas de computador codificados em meios de armazenamento de computador) para receber e renderizar de forma incremental itens de conteúdo. Um sistema exemplificativo inclui um servidor, um dispositivo do usuário, e um cliente que é executado no dispositivo do usuário. O cliente envia uma solicitação de conteúdo para o servidor. O cliente recebe uma resposta à solicitação de conteúdo de forma incremental em múltiplos fragmentos. Os múltiplos fragmentos constituem toda a resposta. Os fragmentos incluem itens de conteúdo e metadados que descrevem os itens de conteúdo, cada item de conteúdo podendo ser renderizado e definido por um ou mais objetos de dados. O cliente renderiza de forma incremental os itens de conteúdo nos fragmentos em um buffer de display à medida que os fragmentos são recebidos. Os itens de conteúdo são renderizados em uma ordem determinada pelos metadados. O cliente exibe todo o buffer de display ou uma parte deste em uma tela do dispositivo do usuário.

Description

Relatório Descritivo da Patente de Invenção para "RESPOS- TAS PROGRESSIVAS DE API".
ANTECEDENTES
[0001] A presente invenção refere-se a plataformas de mensagens sociais, e, em particular, a tecnologias para receber e renderizar de forma incremental fragmentos de uma resposta a uma solicitação de conteúdo de uma plataforma de mensagens sociais.
[0002] Plataformas de mensagens sociais e dispositivos de com- putação pessoal conectados à rede permitem que os usuários criem e compartilhem conteúdo através múltiplos dispositivos em tempo real.
[0003] Plataformas de mensagens sociais populares proveem, em geral, funcionalidade para os usuários redigirem e postarem mensa- gens, tanto forma síncrona quanto assíncrona, para outros usuários. Exemplos de plataformas de mensagens sociais populares incluem o Facebook, o Pinterest e o Twitter ("Facebook" é uma marca comercial da Facebook, Inc., "Pinterest" é uma marca comercial da Pinterest, Inc., e o "Twitter" é uma marca comercial da Twitter, Inc.).
[0004] De maneira geral, quando o software do cliente em um dis- positivo de computação enviar uma solicitação de conteúdo para uma plataforma de mensagens sociais, o software do cliente terá que espe- rar para receber uma resposta completa à solicitação antes de apre- sentar qualquer resposta para o usuário do dispositivo.
SUMÁRIO
[0005] Esta especificação descreve tecnologias que permitem que o software do cliente receba e renderize fragmentos de uma resposta a uma solicitação de conteúdo de uma plataforma de mensagens soci- ais.
[0006] Um sistema exemplificativo inclui um servidor configurado para implementar uma plataforma de mensagens sociais, um dispositi- vo do usuário e o software de cliente da plataforma de mensagens so-
ciais que é executado no dispositivo do usuário. O software do cliente é configurado para enviar uma solicitação de conteúdo para o servidor. O software do cliente recebe uma resposta à solicitação de conteúdo do servidor de forma incremental em múltiplos fragmentos de uma ca- mada de transporte de uma pilha de rede no dispositivo do usuário. Os múltiplos fragmentos constituem toda a resposta. A resposta inclui itens de conteúdo e metadados que descrevem os itens de conteúdo. Cada item de conteúdo pode ser renderizado e definido por um ou mais objetos de dados. O software do cliente renderiza de forma in- cremental, em um buffer de display, os itens de conteúdo nos fragmen- tos à medida que os fragmentos são recebidos. Isto inclui colocar os itens de conteúdo no buffer de exibição em uma ordem determinada pelos metadados. O buffer de exibição é uma estrutura de dados em uma memória do dispositivo do usuário. O software do cliente exibe então todo o buffer de exibição ou uma parte deste em uma tela do dispositivo do usuário.
[0007] Esta especificação usa o termo "configurado para" em co- nexão com sistemas, aparelhos e componentes de programa de com- putador. Para que um sistema de um ou mais computadores seja con- figurado para executar operações ou ações específicas, significa que o sistema tem instalados nele software, firmware, hardware ou uma combinação destes que, em operação, fazem com que o sistema exe- cute as operações ou ações. Para que um ou mais programas de computador sejam configurados para executar operações ou ações específicas, significa que um ou mais programas incluem instruções que, quando executadas pelo aparelho de processamento de dados, fazem com que o aparelho execute as operações ou ações. Para que circuitos lógicos de finalidade específica sejam configurados para exe- cutar operações ou ações específicas, significa que os circuitos apre- sentam lógica eletrônica que executa as operações ou ações.
[0008] O assunto descrito neste pedido pode ser implementado em modalidades específicas de modo a realizar uma ou mais das se- guintes vantagens. Os dispositivos de usuário em uma conexão de baixa largura de banda podem progressivamente renderizar itens de conteúdo em uma resposta antes que toda a resposta seja recebida. Isto é vantajoso porque, em uma conexão de baixa largura de banda, o recebimento de uma resposta completa pode levar várias idas e vol- tas, isto é, o número de idas e voltas que uma conexão TCP leva para dispensar toda a carga útil de resposta.
[0009] Entrementes, os dispositivos de usuário em uma conexão de elevada largura de banda podem receber e renderizar respostas tanto pequenas quanto grandes em uma única ida e volta. Em outras palavras, o assunto descrito nesta especificação otimiza tempo de resposta, não obstante a largura de banda de um usuário.
[0010] Os detalhes de uma ou mais modalidades do assunto deste pedido são mostrados nos desenhos anexos e na descrição abaixo. Outras características, aspectos e vantagens do assunto ficarão evi- dentes a partir da descrição, dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] A Figura 1 é um diagrama de uma plataforma de mensa- gens sociais exemplificativa.
[0012] A Figura 2 é um fluxograma de um processo exemplificativo para estruturar respostas a solicitações de conteúdo.
[0013] A Figura 3 é um fluxograma de um processo exemplificativo para receber e renderizar de forma incremental fragmentos de uma resposta a uma solicitação de conteúdo.
[0014] A Figura 4 é um fluxograma de um processo exemplificativo para receber e renderizar um item de conteúdo que abrange dois ou mais fragmentos de uma resposta.
[0015] Números de referência e designações similares nos vários desenhos indicam elementos similares.
DESCRIÇÃO DETALHADA
[0016] A Figura 1 ilustra uma plataforma de mensagens sociais online exemplificativa 100 e dispositivos de usuário exemplificativos 104a-104n configurados para interagir com a plataforma sobre uma ou mais redes de comunicação de dados com fio ou sem fio 120. Módulos de renderização progressiva 108a-108n implementados no software do cliente 106a-106n são configurados, conforme será descrito posterior- mente, para receber e renderizar de forma incremental itens de conte- údo, por exemplo, mensagens, de servidores da plataforma.
[0017] Os usuários 102a-102n da plataforma usam os dispositivos do usuário 104a-104n, nos quais o software do cliente é instalado, pa- ra usar a plataforma. Os usuários podem interagir com a plataforma de mensagens sociais usando o respectivo software do cliente em seus respectivos dispositivos de usuário.
[0018] Um usuário pode ser o titular de uma conta, ou um usuário autorizado de uma conta, na plataforma. A plataforma pode ter milhões de contas de pessoas físicas, jurídicas ou de outras entidades.
[0019] Em algumas implementações, a plataforma permite seu uso por usuários que não são correntistas ou que não estão registrados em uma conta da plataforma. Se a plataforma permitir o uso por tais usuário, a plataforma poderá permitir que tal usuário poste mensagens ou use outra funcionalidade da plataforma, associando o usuário a uma conta ou identificador temporário.
[0020] Um dispositivo do usuário pode ser qualquer dispositivo co- nectado à Internet, por exemplo, um computador laptop ou desktop, um smartphone ou um tablet eletrônico. O dispositivo do usuário pode ser conectado à Internet por meio de uma rede móvel, por meio de um provedor de serviço da Internet (1), ou de outra forma.
[0021] Cada dispositivo do usuário é configurado com software,
que será referido como um cliente ou software de cliente 106-106n, que, em operação, pode acessar a plataforma de modo que um usuá- rio possa postar e receber mensagens, visualizar e fazer a curadoria dos fluxos do usuário, e visualizar e interagir com listas de itens de conteúdo. Em qualquer dispositivo do usuário específico, o cliente po- de ser um navegador da web ou um documento HTML (linguagem de marcação de hipertexto) renderizado por um navegador da web. Ou o cliente pode ser ou incluir código JavaScript ou código Java. Ou o cli- ente pode ser também software dedicado, por exemplo, um app insta- lado ou aplicativo instalado, que é projetado para trabalhar especifica- mente com a plataforma. Ou o cliente pode ser ou incluir uma interface de Serviço de Mensagens Curtas (SMS), uma interface de mensagens instantâneas, uma interface baseada em email, ou uma interface ba- seada em função API, por exemplo.
[0022] O cliente exibe todo um buffer de exibição ou parte deste, incluindo mensagens e fluxos da plataforma, em uma janela de uma interface gráfica do usuário em uma tela do dispositivo do usuário. O buffer de exibição é uma porção da memória contendo dados, por exemplo, um bitmap, que é usado para conduzir a exibição do disposi- tivo. As mensagens e os fluxos no buffer de exibição podem estar em formato de bitmap renderizado, ou podem estar em uma forma parci- almente renderizada ou pré-processada que pode ser renderizada de imediato quando eles forem movidos para uma janela de visualização.
[0023] A interface gráfica do usuário do cliente pode incluir um elemento de rolagem ou uma funcionalidade de rolagem. Um elemento de rolagem em um controle que recebe entrada de um usuário do cli- ente. Por exemplo, se o dispositivo do usuário for um computador de mesa com um mouse, o usuário poderá clicar e arrastar o elemento de rolagem. Se o dispositivo do usuário for um smartphone, o usuário po- derá simplesmente deslizar a tela do dispositivo do usuário com um dedo. Em resposta a um clique e arraste ou um deslize, o cliente altera qual parte do buffer de exibição é exibida pelo cliente.
[0024] O cliente inclui módulos de renderização progressiva 108a- 108n. Os módulos de renderização progressiva são configurados para receber e de forma incremental e renderizar de forma progressiva fra- gmentos de itens de conteúdo à medida que esses fragmentos são recebidos.
[0025] A plataforma de mensagens sociais online é implementada em um ou mais computadores em uma ou mais localizações que ope- ram como um ou mais servidores que suportam conexões sobre redes com fio ou sem fio 120 a partir de muitos tipos diferentes de dispositi- vos de usuário. A plataforma pode ter muitos milhões de contas, e em qualquer lugar de centenas de milhares a milhões de conexões podem ser estabelecidas ou estar em uso entre clientes e a plataforma a qualquer momento.
[0026] A plataforma e o cliente são configurados para permitir que usuários usem a plataforma para postar mensagens 122 na plataforma e usem a plataforma para receber mensagens 124 postadas por outros usuários.
[0027] Em algumas implementações, a plataforma provê facilida- des para que os usuários enviem mensagens diretamente para um ou mais outros usuários da plataforma, permitindo que o remetente e os destinatários mantenham uma troca privada de mensagens.
[0028] A plataforma é configurada para prover conteúdo, geral- mente mensagens, a um usuário em um fluxo de mensagens de ali- mentação doméstica. As mensagens serão, em geral, mensagens de contas que o usuário está seguindo, o que significa que o destinatário se registrou para receber mensagens postadas pela conta seguida, e, opcionalmente, conteúdo com o qual essas contas se envolveram, por exemplo, endossado. Opcionalmente, a plataforma é configurada para incluir, em um destinatário, mensagens de fluxo de alimentação do- méstica do usuário que a plataforma determina serem provavelmente de interesse do destinatário, por exemplo, mensagens sobre tópicos de interesse atual específico, conforme representado pelas inúmeras de mensagens postadas nos tópicos pelos usuários da plataforma ou mensagens postadas sobre tópicos de aparente interesse para o des- tinatário, conforme representado por mensagens que o destinatário postou ou se envolveu, bem como propagandas selecionadas, anún- cios de serviço público, conteúdo promovido, ou similar.
[0029] A plataforma é configurada para permitir que os usuários troquem mensagens em tempo real, isto é, com um retardo mínimo. À plataforma é também configurada para permitir que os usuários res- pondam às mensagens postadas anteriormente, na ordem de horas ou dias ou mesmo de mais tempo. A plataforma é configurada para exibir mensagens postadas a um ou mais outros usuários dentro de um qua- dro de tempo curto de modo a facilitar o que pode ser essencialmente uma conversa ao vivo entre os usuários.
[0030] A plataforma é também configurada para permitir que os usuários pesquisem o conteúdo na plataforma. Uma pesquisa pode retornar mensagens de múltiplas contas seguidas ou públicas que sa- tisfazem um ou mais critérios, por exemplo, um ou mais termos de pesquisa ou frases-chave. A plataforma é também configurada para permitir que usuários pesquisem contas de outro usuário.
[0031] Desse modo, a funcionalidade de mensagem básica da pla- taforma inclui pelo menos postar novas mensagens, prover fluxos de mensagens quando da solicitação por parte do cliente, gerenciar con- tas, gerenciar conexões entre contas, mensagens e fluxos, e receber dados de engajamento de clientes que indicam como usuários dos cli- entes se envolveram com mensagens e possivelmente outro conteúdo. A plataforma também indexa itens de conteúdo e dados de acesso que caracterizam o acesso dos usuários ao conteúdo e pode fornecer os dados indexados aos titulares de conta.
[0032] De modo geral, uma mensagem postada na plataforma contém dados que representam conteúdo provido pelo autor da men- sagem. A mensagem pode ser um exemplo de um tipo de dados de destinatário que armazena os dados de conteúdo. Os tipos de dados que podem ser armazenados em uma mensagem incluem texto, gráfi- co, imagens, vídeo e código de computador, por exemplo, localizado- res uniformes de recursos (URLs), por exemplo. As mensagens podem também incluir frases-chave, por exemplo, hashtags, que podem aju- dar a categorizar mensagens ou a relacionar mensagens a tópicos. As mensagens podem também incluir metadados que podem ou não ser editáveis pelo titular da conta do autor da mensagem, dependendo do que a plataforma permite. Exemplos de metadados de mensagem in- cluem uma hora e data de autoria e uma localização geográfica do dispositivo do usuário quando ele submeteu a mensagem. Em algu- mas implementações, quando os metadados forem providos para a plataforma por um cliente, será determinado por configurações de pri- vacidade controladas pelo usuário ou titular da conta
[0033] Mensagens compostas por um titular de conta podem fazer referência a outras contas, outras mensagens, ou ambas. Por exem- plo, uma mensagem pode ser composta em resposta a outra mensa- gem composta por outra conta. Uma mensagem pode ser também composta por um usuário em resposta a uma mensagem originalmen- te postada pelo usuário. As mensagens podem ser também republica- ções de uma mensagem composta por outra conta e recebida desta. De modo geral, uma conta referenciada em uma mensagem pode apa- recer como conteúdo visível na mensagem, por exemplo, o nome da conta, e pode também aparecer como metadados na mensagem. Co- mo resultado, as contas referenciadas podem ser interativas na plata-
forma. Por exemplo, os usuários podem interagir com nomes de con- tas que aparecem em seu fluxo de mensagens para navegar para os fluxos de mensagens dessas contas. A plataforma também permite que usuários designem mensagens específicas como privadas; uma mensagem privada irá apenas aparecer nos fluxos de mensagens das contas de composição e destinatário.
[0034] De modo geral, as mensagens são postagens de micro- blogs, que diferem de mensagens de email em inúmeras maneiras, por exemplo, em que um autor de um post de microblog não necessaria- mente precisa especificar, ou mesmo saber, quem serão os destinatá- rios da mensagem.
[0035] Um fluxo é um fluxo de mensagens na plataforma que satis- faz um ou mais critérios de fluxo. Um fluxo pode ser definido pelos cri- térios de fluxo para incluir mensagens postadas por uma ou mais con- tas. Por exemplo, os conteúdos de um fluxo para um titular de conta solicitante podem incluir uma ou mais mensagens (i) compostas por esse titular de conta, (ii) mensagens compostas pelas outras contas que o titular da conta solicitada segue, (iii) mensagens de autoria de outras contas que fazem referência ao titular da conta solicitado, ou (iv) mensagens patrocinadas por terceiros para inclusão no fluxo de mensagens do titular da conta. As mensagens de um fluxo podem ser ordenadas cronologicamente por tempo e data de autoria, ou inverti- das cronologicamente. Os fluxos podem ser também ordenados de outras maneiras, por exemplo, de acordo com uma relevância compu- tacionalmente prevista para o titular da conta, ou de acordo com algu- ma combinação de tempo e pontuação de relevância.
[0036] Um fluxo pode potencialmente incluir um grande número de mensagens. Tanto para eficiência do processamento quanto para a conveniência de visualização do titular da conta solicitante, a platafor- ma geralmente identifica um subconjunto de mensagens que atende aos critérios de fluxo para enviar para um cliente solicitante, uma vez que o fluxo é gerado. O restante das mensagens no fluxo é mantido em um repositório de fluxo e pode ser acessado por uma solicitação de cliente.
[0037] Módulos de dispensa 112a-112m dos servidores da plata- forma 110a-110m constroem fluxos de mensagens e os proveem aos clientes solicitantes, por exemplo, através de um servidor de front end. Respondendo a uma solicitação de um fluxo, um respectivo módulo de dispensa ou constrói o fluxo em tempo real, ou acessa, a partir de um repositório de fluxo, parte ou todo um fluxo que já foi gerado. O módulo de dispensa armazena fluxos gerados no repositório de fluxo. Um titu- lar de conta pode solicitar pode solicitar qualquer de seus próprios flu- xos, ou os fluxos de qualquer outra conta que eles podem acessar com base nas configurações de segurança. Se um fluxo incluir um grande número de mensagens, o módulo de dispensa irá geralmente identificar um subconjunto das mensagens para enviar para um cliente solicitante, em cujo caso o restante das mensagens é mantido em um repositório de fluxo e enviado quando da solicitação do cliente.
[0038] Os módulos de dispensa podem estruturar respostas a soli- citações de conteúdo de tal maneira que os fragmentos de respostas possam ser recebidos, renderizados e exibidos de forma incremental pelo cliente. Este processo será descrito em maiores detalhes em refe- rência à Figura 2.
[0039] A Figura 2 é um fluxograma de um processo exemplificativo 200 para estruturas respostas para solicitações de conteúdo. O pro- cesso pode ser executado por um servidor de plataforma da platafor- ma de mensagens sociais online da Figura 1. Mais especificamente, o processo pode ser executado por um módulo de dispensa no servidor da plataforma.
[0040] O módulo de dispensa obtém itens de conteúdo que são responsivos a uma solicitação de conteúdo de um cliente e metadados que descrevem esses itens de conteúdo (210).
[0041] O módulo de dispensa coloca metadados que descrevem os itens de conteúdo em um fragmento inicial da resposta (220). Os metadados podem incluir um identificador de sequência para cada item de conteúdo. Um identificador de sequência especifica uma loca- lização em um buffer de exibição de um dispositivo do usuário onde o item de conteúdo deve ser renderizado com relação a outros itens de conteúdo. Pelo fato de os metadados estarem em um fragmento inicial da resposta, o cliente pode renderizar itens de conteúdo em locais de- signados no buffer de exibição antes de o cliente receber todos os itens de conteúdo na resposta.
[0042] O módulo de dispensa coloca os itens de conteúdo depois dos metadados (230). Mais especificamente, ele coloca os dados ne- cessários para renderizar cada item de conteúdo em um ou mais obje- tos de dados que definem o item de conteúdo ou nos objetos de dados que definem itens de conteúdo que precedem o item de conteúdo na resposta. Com a estrutura dos dados desta maneira, o módulo de dis- pensa assegura que o cliente receba todos os dados que ele precisa para renderizar qualquer item de conteúdo determinado no momento em que o cliente receber esse item de conteúdo. Consequentemente, o cliente pode renderizar e exibir um ou mais itens de conteúdo antes que todos os itens de conteúdo sejam recebidos.
[0043] A Figura 3 é um fluxograma de um processo exemplificativo 300 para renderizar de forma incremental itens de conteúdo. O pro- cesso pode ser executado por um cliente em um dispositivo do usuá- rio.
[0044] O cliente envia uma solicitação de conteúdo para um servi- dor hóspede (310).
[0045] O servidor hóspede envia uma resposta estruturada para o cliente. No cenário de interesse, o cliente recebe a resposta em múlti- plos fragmentos que juntos constituem toda a resposta (320). O cliente obtém os fragmentos de uma pilha de rede no dispositivo do usuário, por exemplo, de uma camada de transporte, antes de a pilha de rede prover toda a resposta para o cliente.
[0046] A camada de transporte de uma pilha de rede é uma das diversas camadas de software que juntas proveem serviços de comu- nicação de dados para os aplicativos que são executados no dispositi- vo do usuário. Em particular, a camada de transporte implementa um conjunto de protocolos que proveem serviços de comunicação de hós- pede para hóspede para aplicativos. Um exemplo de um protocolo de camada de transporte é o Protocolo de Controle de Transmissão (TCP). Outro exemplo é o Protocolo de Datagrama de Usuário (UDP). Os fragmentos obtidos pelo cliente são formados de um ou mais seg- mentos ou um ou mais datagramas, dependendo do protocolo especií- fico que é usado.
[0047] Os fragmentos da resposta contêm itens de conteúdo e me- tadados que descrevem os itens de conteúdo. Cada item de conteúdo pode ser renderizado para exibição e é definido por um ou mais obje- tos de dados. Por exemplo, um item de conteúdo específico pode ser definido por um objeto de JavaScript Object Notation ("'JSON"). JSON é um formato de texto para a serialização de dados estruturados. Ele usa texto legível pelo homem para transmitir objetos de dados que consistem em pares de valor de atributo e tipos de dados de matriz.
[0048] Os metadados que descrevem os itens de conteúdo podem incluir, para cada item de conteúdo, um identificador de sequência. O identificador de sequência para um item de conteúdo específico espe- cifica um local no buffer de exibição do item de conteúdo em relação a outros itens de conteúdo na resposta e em relação a itens de conteúdo em respostas que foram previamente renderizado no buffer de exibi-
ção. Por exemplo, o identificador de sequência poderia especificar que um item de conteúdo deva ser renderizado "abaixo" de um primeiro item de conteúdo e "acima" de um segundo item de conteúdo no buffer de exibição. Em algumas implementações, o identificador de sequên- cia se baseia em, ou é, um carimbo de data/hora associado com o item de conteúdo. O carimbo de data/hora pode indicar um momento em que o item de conteúdo foi criado em relação a outros itens de con- teúdo. Neste caso, os itens de conteúdo podem ser colocados no buf- fer de exibição em ordem cronológica ou cronológica inversa.
[0049] Alternativamente, o identificador de sequência para um item de conteúdo pode ser baseado em uma estimativa da probabilidade de um usuário gostar ou interagir com o item de conteúdo. Por exemplo, um servidor de plataforma da plataforma de mensagens sociais pode determinar que um determinado usuário tem mais probabilidade de gostar ou interagir com um primeiro item de conteúdo do que um se- gundo item de conteúdo. Em tal caso, o identificador de sequência pa- ra o primeiro item de conteúdo poderia especificar que ele deve ser colocado "acima" do segundo item de conteúdo de modo que o usuá- rio tenha mais probabilidade de vê-lo ou de vê-lo primeiro. O servidor hóspede pode determinar uma probabilidade de que um usuário irá gostar e interagir com um item de conteúdo específico, analisando as interações anteriores do usuário com itens de conteúdo similares.
[0050] O cliente renderiza de forma incremental os itens de conte- údo nos fragmentos no buffer de exibição à medida que os fragmentos são obtidos em uma ordem no buffer de exibição determinada pelos metadados (330).
[0051] Cada dos itens de conteúdo pode ser individualmente ren- derizado. Em outras palavras, os dados necessários para renderizar cada item de conteúdo na reposta estão contidos em um ou mais obje- tos de dados que definem o item de conteúdo ou nos dados encontra-
dos anteriormente na resposta, por exemplo, anteriormente em um fragmento presente ou em um fragmento previamente recebido da resposta. Consequentemente, o cliente pode renderizar itens de con- teúdo individuais antes de ele receber toda uma resposta.
[0052] Em algumas implementações, o cliente recebe os metada- dos em um fragmento inicial da resposta e inclui, além de um respecti- vo identificador de sequência para cada item de conteúdo na resposta, uma contagem total de itens de conteúdo na resposta. Com esta in- formação, o cliente pode renderizar os itens de conteúdo no fragmento inicial e incluir no buffer de exibição um respectivo espaço reservado para cada item de conteúdo nos fragmentos subsequentes da respos- ta. Por fim, o cliente pode substituir respectivos espaços reservados quando da renderização de itens de conteúdo dos fragmentos subse- quentes. O cliente pode criar os espaços reservados no buffer de exi- bição onde os itens de conteúdo correspondentes aparecerão, por exemplo, os locais definidos pelos identificadores de sequência dos itens de conteúdo.
[0053] Na renderização de um item de conteúdo, o cliente geral- mente identifica o início de um objeto ou objetos de dados que definem o item de conteúdo e subsequentemente identifica o final do objeto ou objetos de dados que definem o item de conteúdo. Em alguns casos, o objeto ou objetos que definem um item de conteúdo específico estão totalmente contidos em um único fragmento da resposta. Em outros casos, eles abrangem dois ou mais fragmentos.
[0054] Finalmente, o cliente exibe todo o buffer de exibição ou uma parte do mesmo em uma tela do dispositivo do usuário (340). Em implementações nas quais o buffer de exibição dispõe de espaços re- servados, o cliente pode exibir esses espaços reservados para indicar ao usuário que alguns itens de conteúdo têm que ser ainda renderiza- dos. Os espaços reservados têm preferivelmente uma altura vertical fixa, quando exibidos, enquanto os itens de conteúdo de entrada têm geralmente uma altura vertical variável. Visto que o cliente substitui os espaços reservados por itens de conteúdo, o cliente pode assegurar que os itens na janela de visualização não mudem verticalmente, ex- pandindo o tamanho do buffer de exibição em uma direção distante da janela de visualização. Ou seja, se o espaço reservado estiver acima da janela de visualização, o cliente poderá fazer com que o buffer de exibição se expanda ascendentemente. Se o espaço reservado estiver abaixo da janela de visualização, o cliente poderá fazer com que o buf- fer de exibição se expanda descendentemente. O cliente pode deter- minar qual parte do buffer de exibição exibir com base na entrada de usuário, por exemplo, com base em uma entrada de rolagem na inter- face de usuário do cliente.
[0055] Em algumas implementações, o cliente insere e exibe um único espaço reservado no lugar de múltiplos espaços reservados ad- jacentes.
[0056] A Figura 4 é um fluxograma de um processo exemplificativo 400 para renderizar itens de conteúdo que abrangem dois ou mais fra- gmentos de uma resposta. O processo 400 pode ser executado por um cliente que é executado em um dispositivo do usuário.
[0057] O cliente obtém um próximo fragmento de uma resposta (410). O cliente determinará se o fragmento inclui uma porção inicial de um novo item de conteúdo (420). O cliente pode fazer essa deter- minação pesquisando os identificadores de objeto de dados no frag- mento. Por exemplo, se os itens de conteúdo forem definidos pelos objetos JSON, o cliente poderá pesquisar o fragmento para um colche- te de abertura que indica o início de um objeto JSON. Se o fragmento não incluir uma porção inicial de um novo item de conteúdo, o cliente obterá um próximo fragmento da resposta (410).
[0058] Se o fragmento não incluir uma porção inicial de um novo item de conteúdo, o cliente determinará se o fragmento obtido, isto é, o fragmento atual e os fragmentos anteriormente obtidos incluem todo o novo item de conteúdo (430). Isto é, o cliente determina se ele obteve todas as porções do novo item de conteúdo. O cliente pode pesquisar o fragmento para identificadores de objeto de dados para fazer esta determinação.
[0059] Se o cliente determinar que ele não obteve todas as por- ções do novo item de conteúdo, ele obterá um novo fragmento da res- posta (440) e novamente determinará se esse próximo fragmento e fragmentos previamente obtidos incluem todo o novo item de conteúdo (430). Pelo fato de os itens de conteúdo poderem abrangem dois ou mais fragmentos de uma resposta, o cliente pode repetir seu processo várias vezes.
[0060] Se o cliente determinar que ele obteve todas as porções novo item de conteúdo, ele montará essas porções (450). O cliente pode montar as porções à medida que ele as recebe, ou pode montá- las imediatamente depois de ter recebido todas as porções. Em alguns casos, o item de conteúdo pode estar totalmente contido em um frag- mento único da resposta. Em tais casos, nenhuma montagem é ne- cessária.
[0061] O cliente renderiza o item de conteúdo montado em um buf- fer de exibição no dispositivo do usuário (460). Em seguida, o cliente determina se o fragmento atual inclui qualquer porção de um novo item de conteúdo (420), uma vez que um único fragmento pode conter múl- tiplos itens de conteúdo. Caso negativo, o cliente obterá um novo fra- gmento da resposta (410).
[0062] Em alguns casos, enquanto o cliente recebe e renderiza de forma incremental dados, uma resposta pode parcialmente falhar. Por exemplo, uma resposta apresentando cem itens de conteúdo poderia falhar depois de o cliente ter recebido apenas vinte itens de conteúdo.
Tal falha poderá ocorrer, por exemplo, se o protocolo de camada de transporte for UDP. UDP não requerer canais de comunicação e, por- tanto, ser suscetível à falta de confiabilidade da rede subjacente.
[0063] Quando isto ocorrer, em algumas implementações, um erro será mostrado em linha, isto é, um erro é exibido onde oitenta itens de conteúdo restantes teriam sido de outra forma exibidos. O usuário do cliente pode interagir com essa mensagem de erro na interface gráfica do usuário para tentar carregar novamente os restantes oitenta itens restantes.
[0064] Se o cliente receber um item de conteúdo malformado, por exemplo, se o cliente receber um item de conteúdo com dados faltan- tes, o cliente poderá descartar silenciosamente o conteúdo.
[0065] As modalidades do assunto e as ações e operações descri- tas nesta especificação poderão ser implementadas em circuitos ele- trônicos digitais, em software ou firmware de computador tangivelmen- te concretizado, em hardware de computador, incluindo as estruturas descritas nesta especificação e seus equivalentes estruturais, ou em combinações de um ou mais deles. As modalidades do assunto des- crito nesta especificação podem ser implementadas como um ou mais programas de computador, isto é, um ou mais módulos de instruções de programa de computador codificadas em um meio de armazena- mento não transitório tangível para execução pelo aparelho de proces- samento de dados, ou para controlar a operação do mesmo. Alternati- va ou ainda, as instruções do programa podem ser codificadas em um sinal propagado artificialmente gerado, por exemplo, um sinal elétrico, óptico ou eletromagnético gerado por máquina que é gerado para codi- ficar a informação para transmissão para o aparelho receptor adequa- do para execução por um aparelho de processamento de dados. O meio de armazenamento de computador pode ser ou ser parte de um dispositivo de armazenamento legível por máquinas, um substrato de armazenamento legível por máquina, um dispositivo de memória de acesso aleatório ou em série, ou uma combinação de um ou mais de- les. Um meio de armazenamento de computador não é um sinal pro- pagado.
[0066] O termo "aparelho de processamento de dados" abrange todos os tipos de aparelhos, dispositivos e máquinas para processar dados, incluindo por meio de exemplo um processador programável, um comutador ou múltiplos processadores ou computadores. O apare- lho de processamento de dados pode incluir circuitos lógicos de finali- dade específica, por exemplo, um FPGA (arranjo de porta programável em campo), e ASIC (circuito integrado de aplicação específica), ou uma GPU (unidade de processamento gráfico). O aparelho pode tam- bém incluir, além do hardware, código que criar um ambiente de exe- cução para programas de computador, por exemplo, código que cons- titui um firmware de processador, uma pilha de protocolos, um sistema de gerenciamento de banco de dados, um sistema de operação, ou uma combinação de um ou mais destes.
[0067] Um programa de computador, que pode ser também referi- do ou descrito como um programa, software, um aplicativo de softwa- re, um app, um módulo, um módulo de software, um motor, um script, ou código, pode ser escrito em qualquer forma da linguagem de pro- gramação, incluindo linguagens compiladas ou interpretadas, ou lin- guagens declarativas ou processuais; e pode ser desenvolvido em qualquer forma, incluindo um programa autônomo ou como um módu- lo, componente, motor, sub-rotina, ou outra unidade adequada para execução em um ambiente de computação, cujo ambiente pode incluir um ou mais computadores interconectados por uma rede de comuni- cação de dados em uma ou mais localizações.
[0068] Um programa de computador pode, embora não precise, corresponder a um arquivo em um sistema de arquivos. Um programa de computador pode ser armazenado em uma porção de um arquivo que detém outros programas ou dados, por exemplo, um ou mais scripts armazenados em um documento de linguagem de marcação, em um único arquivo dedicado ao programa em questão, ou em múlti- plos arquivos coordenados, por exemplo, arquivos que armazenam um ou mais módulos, subprogramas, ou porções de código.
[0069] Os processos e os fluxos lógicos descritos nesta especifi- cação podem ser executados por um ou mais computadores que exe- cutam um ou mais programas de computador para executar opera- ções, operando em dados de entrada e gerando saída. Os processos e fluxos lógicos podem também ser executados por circuitos lógicos de finalidade específica, por exemplo, um FPGA, um ASIC, ou uma GPU, ou por uma combinação de circuitos lógicos e um ou mais computado- res programados.
[0070] Computadores adequados para a execução de um progra- ma de computador podem se basear em microprocessadores de uso geral ou de finalidade específica, ou ambos, ou em qualquer outro tipo de unidade de processamento central. De maneira geral, uma unidade de processamento central irá receber instruções e dados de uma me- mória apenas de leitura ou de uma memória de acesso aleatório, ou ambas. Os elementos essenciais de um computador são uma unidade de processamento central para executar instruções e um ou mais dis- positivos de memória para armazenar instruções e dados. A unidade de processamento central e a memória podem ser suplementadas por circuitos lógicos de finalidade específica, ou incorporadas nestes.
[0071] De modo geral, um computador também irá incluir, ou ser operativamente acoplado para receber e transferir dados de/para um ou mais dispositivos de armazenamento em massa. Os dispositivos de armazenamento em massa podem ser, por exemplo, discos magnéti- cos, magneto-ópticos ou ópticos, ou unidades de estado sólido. Entre-
tanto, um computador não precisa ter tais dispositivos. Ademais, um computador pode ser embutido em outro dispositivo, por exemplo, um telefone móvel, um assistente digital pessoal (PDA), um aparelho de reprodução de áudio ou vídeo móvel, um console de jogos, um recep- tor do Sistema de Posicionamento Global (GPS), ou um dispositivo de armazenamento portátil, por exemplo, uma unidade flash de barramen- to serial universal (USB), apenas para citar alguns.
[0072] Para prover a interação com um usuário, modalidades do assunto descritas nesta especificação podem ser implementadas em um computador apresentando um dispositivo de vídeo, por exemplo, um monitor LCD (tela de cristal líquido), ou configuradas para se co- municar com o mesmo, para exibir informação para o usuário, e um dispositivo de entrada pelo qual o usuário pode prover entrada para o computador, por exemplo, um teclado e um dispositivo de apontar, por exemplo, um mouse, um trackball ou touchpad. Outros tipos de dispo- sitivos podem ser usados para prover interação com um usuário tam- bém; por exemplo, feedback provido para o usuário pode ser qualquer forma de feedback sensorial, por exemplo, feedback visual, feedback auditivo, ou feedback táctil; e entrada do usuário pode ser recebida em qualquer forma, incluindo entrada acústica, de fala ou táctil. Além dis- so, um computador pode interagir com um usuário enviando e rece- bendo documentos para/de um dispositivo que é usado pelo usuário; por exemplo, enviando páginas da web, ou interagindo com um app que é executado em um dispositivo do usuário, por exemplo, um smar- tphone ou tablet eletrônico. Também, um computador pode interagir com um usuário enviando mensagens de texto ou outras formas de mensagem para um dispositivo pessoal, por exemplo, um smartphone que executa um aplicativo de mensagens, e que recebe mensagens responsivas do usuário em troca.
[0073] As modalidades do assunto descrito nesta especificação podem ser implementadas em um sistema de computação que inclui um componente back-end, por exemplo, como um servidor de dados, ou que inclui um componente middleware, por exemplo, um servidor de aplicativos, ou que inclui um componente front-end, por exemplo, um computador de cliente apresentando uma interface gráfica do usu- ário, um navegador da web, ou um app através do qual um usuário pode interagir com uma implementação do assunto descrito nesta es- pecificação, ou qualquer combinação de um ou mais de tais compo- nentes back-end, middleware ou front-end. Os componentes do siste- ma podem ser interconectados por qualquer forma ou meio de comu- nicação de dados digitais, por exemplo, uma rede de comunicação. Exemplos de redes de comunicação incluem uma rede de área local (LAN) e uma rede de área ampla (WAN), por exemplo, a Internet.
[0074] O sistema de computador pode incluir clientes e servidores. Um cliente e servidor são geralmente remotos entre si e interagem ti- picamente através uma rede de comunicação. A relação de cliente e servidor surge em virtude dos programas de computador que são exe- cutados nos respectivos computadores e que têm uma relação mútua de cliente-servidor. Em algumas modalidades, um servidor transmite dados, por exemplo, uma página HTML, para um dispositivo do usuá- rio, por exemplo, para fins de exibir e receber dados na/da entrada de usuário de um usuário que interage com o dispositivo, que atua como um cliente. Os dados gerados no dispositivo do usuário, por exemplo, um resultado da interação do usuário, podem ser recebidos no servi- dor do dispositivo.
[0075] Além das modalidades descritas acima, as seguintes moda- lidades são também inovadoras.
[0076] A modalidade 1 é um método executado pelo software de cliente de uma plataforma de mensagens sociais que é executado em um dispositivo do usuário, o método compreendendo:
[0077] enviar uma solicitação de conteúdo para um servidor que compreende um ou mais computadores e um ou mais dispositivos de armazenamento, o servidor configurado para implementar a plataforma de mensagens sociais;
[0078] receber uma resposta à solicitação de conteúdo do servidor de forma incremental em múltiplos fragmentos de uma camada de transporte de uma pilha de rede no dispositivo do usuário, onde os múltiplos fragmentos constituem toda a resposta, em que a resposta inclui itens de conteúdo e metadados que descrevem os itens de con- teúdo, e em que cada item de conteúdo pode ser renderizado e defini- do por um ou mais objetos de dados;
[0079] renderizar de forma incremental, em um buffer de exibição, os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos, incluindo colocar os itens de conteúdo no buffer de exibição em uma ordem determinada pelos metadados, o buffer de exibição sendo uma estrutura de dados em uma memória do dispositivo do usuário; e
[0080] exibir todo o buffer de exibição ou uma parte do mesmo em uma tela do dispositivo do usuário.
[0081] A modalidade 2 é o método da modalidade 1, em que o sof- tware de cliente é um app autônomo ou um programa JavaScript que é executado em um navegador da web instalado no dispositivo do usuá- rio.
[0082] A modalidade 3 é o método de qualquer das modalidades 1-2, em que os metadados que descrevem os itens de conteúdo inclu- em, para cada item de conteúdo, um identificador de sequência que especifica um local no buffer de exibição do item de conteúdo em rela- ção a outros itens de conteúdo na resposta e em relação a itens de conteúdo em respostas previamente renderizadas no buffer de exibi- ção.
[0083] A modalidade 4 é o método da modalidade 3, em que um identificador de sequência para um respectivo item de conteúdo cor- responde a um tempo em que o item de conteúdo foi criado em rela- ção a outros itens de conteúdo.
[0084] A modalidade 5 é o método de qualquer das modalidades 1-4, em que os metadados são recebidos em um fragmento inicial da resposta e incluem uma contagem total de itens de conteúdo na res- posta, e em que o método adicional compreende: renderizar, no buffer de exibição, os itens de conteúdo no fragmento inicial e incluir, no buffer de exibição, um respectivo espaço reservado para cada item de conteúdo em subsequentes fragmentos da resposta; e substituir os respectivos espaços reservados quando da renderização dos itens de conteúdo nos fragmentos subsequentes.
[0085] A modalidade 6 é o método da modalidade 5, em que os metadados ainda incluem, para cada item de conteúdo, um identifica- dor de sequência, e em que um respectivo espaço reservado é criado em um local no buffer de exibição especificado pelo identificador de sequência de seu item de conteúdo correspondente.
[0086] A modalidade 7 é o método de qualquer das modalidades 1-6, em que renderizar de forma incremental os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos compreende: determinar que um primeiro fragmento inclui apenas uma porção inicial de um item de conteúdo específico; receber um segundo fragmento que inclui o restante do item de conteúdo específico; montar a porção inicial e o restante do item de conteúdo específico; e renderizar o item de conteúdo montado no buffer de exibi- ção.
[0087] A modalidade 8 é o método da modalidade 7, em que um ou mais objetos de dados são objetos JSON, e em que renderizar de forma incremental os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos compreende, para cada item de conteú- do: identificar o início de um objeto JSON que define o item de conteúdo; e identificar o final do objeto JSON que define o item de con- teúdo.
[0088] A modalidade 9 é o método de qualquer das modalidades 1-8, em que cada dos fragmentos da resposta compreende um ou mais segmentos de camada de transporte providos por um protocolo de camada de transporte para o software de cliente.
[0089] A modalidade 10 do método de qualquer de modalidades 1- 9, em que, em cada resposta, dados necessários para renderizar cada item de conteúdo na resposta são contidos em um ou mais objetos de dados que definem o item de conteúdo ou em um ou mais objetos de dados que definem itens de conteúdo previamente recebidos na res- posta.
[0090] A modalidade 11 é o método de qualquer das modalidades 1-10, em que o servidor é um servidor remoto.
[0091] A modalidade 12 é um sistema que compreende: um servidor que compreende um ou mais computadores e um ou mais dispositivos de armazenamento, o servidor configurado para implementar uma plataforma de mensagens sociais; um dispositivo do usuário; e software de cliente da plataforma de mensagens sociais que é executado no dispositivo do usuário, em que o software de cliente é configurado para executar o método de qualquer das modalidades 1-11.
[0092] A modalidade 13 é um ou mais meios de armazenamento de computador que armazena instruções que são operáveis, quando executadas por um ou mais computadores, para fazer com que um ou mais computadores executem o método de qualquer das modalidades 1-11.
[0093] A modalidade 14 é um sistema que compreende: um ou mais computadores e um ou mais de dispositivos de armazenamento configurados para implementar uma plataforma de mensagens sociais, um ou mais dispositivos de armazenamento que armazenam instruções que, quando executadas por um ou mais com- putadores, fazem com que um ou mais computadores executem ope- rações que compreendem: receber uma solicitação de conteúdo do software de cliente da plataforma de mensagens sociais, o software de cliente sendo exe- cutado em um dispositivo do usuário; obter (i) itens de conteúdo que correspondem à solicitação de conteúdo, (ii) metadados que descrevem os itens de conteúdo, e (iii) dados necessários para renderizar os itens de conteúdo, em que os metadados que descrevem os itens de conteúdo incluem, para ca- da item de conteúdo, um identificador de sequência que especifica uma localização em um buffer de exibição do dispositivo do usuário em que o item de conteúdo deve ser renderizado com relação a outros itens de conteúdo; gerar uma resposta à solicitação de conteúdo, que inclui: colocar os metadados em um fragmento inicial da resposta, e colocar os dados necessários para renderizar cada item de conteúdo em um ou mais objetos de dados que definem o item de con- teúdo ou em um ou mais objetos de dados que definem um item de conteúdo que precede o item de conteúdo na resposta; e enviar a resposta ao software de cliente.
[0094] Enquanto está especificação contém muitos detalhes de implementação específicos, estes não devem ser construídos como limitações sobre o escopo de qualquer invenção ou sobre o escopo do que está sendo ou pode ser reivindicado, mas, em vez disso, como descrições de características que podem ser específicas a modalida- des específicas de invenções específicas. Certas características que são descritas nesta especificação no contexto de modalidades sepa- radas podem ser também implementadas em combinação em uma única modalidade. Contrariamente, várias características que são des- critas no contexto de uma única modalidade podem também ser im- plementadas em múltiplas modalidades separadamente ou em qual- quer subcombinação adequada. Além disso, embora as características possam ser descritas acima como atuando em certas combinações e ser mesmo inicialmente reivindicadas como tais, uma ou mais caracte- rísticas de uma combinação reivindicada podem, em alguns casos, ser extirpadas da combinação, e a reivindicação pode ser direcionada pa- ra uma subcombinação ou variação de uma subcombinação.
[0095] Similarmente, enquanto as operações são representadas nos desenhos e recitadas nas reivindicações em uma ordem específi- ca, isto não deve ser entendido como sendo necessário que tais ope- rações sejam executadas na ordem específica mostrada ou em uma ordem sequencial, ou que todas as operações ilustradas sejam execu- tadas, para obter os resultados desejáveis. Em certas circunstâncias, o processamento de múltiplas tarefas e paralelo pode ser vantajoso. Ademais, a separação de vários módulos e componentes do sistema nas modalidades descritas acima não deve ser entendida como sendo necessária em todas as modalidades, e deve ser entendido que os componentes e sistemas do programa descritos podem ser geralmente integrados juntos em um único produto de software ou acondicionados em múltiplos produtos de software.
[0096] Modalidades específicas do assunto foram descritas. Ou- tras modalidades estão dentro do escopo das seguintes reivindica- ções. Por exemplo, as ações recitadas nas reivindicações podem ser executadas em uma ordem diferente e ainda obter resultados desejá- veis. Como um exemplo, os processos representados nas figuras ane- xas não necessariamente requerem a ordem específica mostrada, ou uma ordem sequencial, para obter os resultados desejáveis. Em al- guns casos, o processamento de múltiplas tarefas e paralelo pode ser vantajoso.

Claims (24)

REIVINDICAÇÕES
1. Sistema, caracterizado pelo fato de compreender: um servidor que compreende um ou mais computadores e um ou mais dispositivos de armazenamento, o servidor configurado para implementar uma plataforma de mensagens sociais; um dispositivo do usuário; e software de cliente da plataforma de mensagens sociais que é executado no dispositivo do usuário.
em que o software de cliente é configurado para executar operações que compreendem: enviar uma solicitação de conteúdo para o servidor; receber uma resposta à solicitação de conteúdo do servidor de forma incremental em múltiplos fragmentos de uma camada de transporte de uma pilha de rede no dispositivo do usuário, em que múl- tiplos fragmentos constituem toda a resposta, em que a resposta inclui itens de conteúdo e metadados que descrevem os itens de conteúdo, e em que cada item de conteúdo pode ser renderizado e definido por um ou mais objetos de dados; renderizar de forma incremental, em um buffer de exibição, os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos, incluindo colocar os itens de conteúdo no buffer de exibição em uma ordem determinada pelos metadados, o buffer de exibição sendo uma estrutura de dados em uma memória do dispositivo do usuário; e exibir todo o buffer de exibição ou uma parte do mesmo em uma tela do dispositivo do usuário.
2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de o software do cliente ser um app autônomo ou um pro- grama JavaScript que é executado em um navegador da web instalado no dispositivo do usuário.
3. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de os metadados que descrevem os itens de conteúdo incluí- rem, para cada item de conteúdo, um identificador de sequência que especifica um local no buffer de exibição do item de conteúdo em rela- ção a outros itens de conteúdo na resposta e em relação a itens de conteúdo em respostas anteriormente renderizadas no buffer de exibi- ção.
4. Sistema, de acordo com a reivindicação 3, caracterizado pelo fato de um identificador de sequência para um respectivo item de conteúdo corresponder a um tempo em que o item de conteúdo foi cri- ado em relação a outros itens de conteúdo.
5. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de os dados serem recebidos em um fragmento inicial da resposta e incluírem uma contagem total de itens de conteúdo na res- posta, e de as operações ainda compreenderem: renderizar, no buffer de exibição, os itens de conteúdo no fragmento inicial e incluir, no buffer de exibição, um respectivo espaço reservado para cada item de conteúdo em subsequentes fragmentos da resposta, e substituir os respectivos espaços reservados quando da renderização dos itens de conteúdo nos fragmentos subsequentes.
6. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de os metadados ainda incluírem, para cada item de conteú- do, um identificador de sequência, e de o respectivo espaço reservado ser criado em um local no buffer de exibição especificado pelo identifi- cador de sequência de seu item de conteúdo correspondente.
7. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de renderizar de forma incremental os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos compreender: determinar que um primeiro fragmento inclui apenas uma porção inicial de um item de conteúdo específico; receber um segundo fragmento que inclui o restante do item de conteúdo específico; montar a porção inicial e o restante do item de conteúdo específico; e renderizar o item de conteúdo montado no buffer de exibi- ção.
8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de um ou mais objetos de dados serem objetos JSON, e de renderizar de forma incremental os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos compreender: identificar o início de um objeto JSON que define o item de conteúdo; e identificar o final do objeto JSON que define o item de con- teúdo.
9. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de cada dos fragmentos da resposta compreender um ou mais segmentos de camada de transporte providos por um protocolo de camada de transporte para o software de cliente.
10. Sistema, de acordo com a reivindicação 1, caracteriza- do pelo fato de, em cada resposta, dados necessários para renderizar cada item de conteúdo na resposta serem contidos em um ou mais objetos de dados que definem o item de conteúdo ou em um ou mais objetos de dados que definem itens de conteúdo previamente recebi- dos na resposta.
11. Sistema, de acordo com a reivindicação 1, caracteriza- do pelo fato de o servidor ser um servidor remoto.
12. Método executado por software de cliente de uma plata- forma de mensagens sociais que é executado em um dispositivo do usuário, o método caracterizado pelo fato de compreender:
enviar uma solicitação de conteúdo a um servidor que com- preende um ou mais computadores e um ou mais dispositivos de ar- mazenamento, o servidor configurado para implementar a plataforma de mensagens sociais; receber uma resposta à solicitação de conteúdo do servidor de forma incremental em múltiplos fragmentos de uma camada de transporte de uma pilha de rede no dispositivo do usuário, em que os múltiplos fragmentos constituem toda a resposta, em que a resposta inclui itens de conteúdo e metadados que descrevem os itens de con- teúdo, e em que cada item de conteúdo pode ser renderizado e defini- do por um ou mais objetos de dados; renderizar de forma incremental, em um buffer de exibição, os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos, incluindo colocar os itens de conteúdo no buffer de exibição em uma ordem determinada pelos metadados, o buffer de exibição sendo uma estrutura de dados em uma memória do dispositivo do usuário; e exibir todo o buffer de exibição ou uma parte deste em uma tela do dispositivo do usuário.
13. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de o software do cliente ser um app autônomo ou um pro- grama JavaScript que é executado em um navegador da web instalado no dispositivo do usuário.
14. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de os metadados que descreverem os itens de conteúdo incluírem, para cada item de conteúdo, um identificador de sequência que especifica um local no buffer de exibição do item de conteúdo em relação a outros itens de conteúdo na resposta e em relação a itens de conteúdo em respostas previamente renderizadas no buffer de exibi- ção.
15. Método, de acordo com a reivindicação 14, caracteriza- do pelo fato de o identificador de sequência para um respectivo item de conteúdo corresponder a um tempo em que o item de conteúdo foi criado em relação a outros itens de conteúdo.
16. Método, de acordo com a reivindicação 12, no qual os metadados são recebidos em um fragmento inicial da resposta e inclu- íem uma contagem total de itens de conteúdo na resposta, o método caracterizado pelo fato de ainda compreender: renderizar, no buffer de exibição, os itens de conteúdo no fragmento inicial e incluir, no buffer de exibição, um respectivo espaço reservado para cada item de conteúdo em fragmentos subsequentes da resposta; e substituir os respectivos espaços reservados quando da renderização dos itens de conteúdo nos fragmentos subsequentes.
17. Método, de acordo com a reivindicação 16, caracteriza- do pelo fato de os metadados ainda incluírem, para cada item de con- teúdo, um identificador de sequência, e de um respectivo espaço re- servado ser criado em um local no buffer de exibição especificado pelo identificador de sequência de seu item de conteúdo correspondente.
18. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de renderizar de forma incremental os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos compre- ender: determinar que um primeiro fragmento inclui apenas uma porção inicial de um item de conteúdo específico; receber um segundo fragmento que inclui o restante do item de conteúdo específico; montar a porção inicial e o restante do item de conteúdo específico; e renderizar o item de conteúdo montado no buffer de exibi-
ção.
19. Método, de acordo com a reivindicação 18, caracteriza- do pelo fato de um ou mais objetos serem objetos JSON, e de renderi- zar de forma incremental os itens de conteúdo nos fragmentos à medi- da que os fragmentos são recebidos compreender, para cada item de conteúdo: identificar o início de um objeto JSON que define o item de conteúdo; e identificar o final do objeto JSON que define o item de con- teúdo.
20. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de cada dos fragmentos da resposta compreender um ou mais segmentos de camada de transporte providos por um protocolo de camada de transporte para o software de cliente.
21. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de, em cada resposta, dados necessários para renderizar cada item de conteúdo na resposta estarem contidos em um ou mais objetos de dados que definem o item de conteúdo ou em um ou mais objetos de dados que definem os itens de conteúdo previamente rece- bidos na resposta.
22. Método, de acordo com a reivindicação 12, caracteriza- do pelo fato de o servidor ser um servidor remoto.
23. Meio de armazenamento legível por computador não transitórios, caracterizados pelo fato de armazenarem instruções que, quando executadas por um ou mais computadores, acarretam um ou mais computadores executarem operações que compreendem: enviar a solicitação de conteúdo para um servidor que compreende um ou mais computadores e um o mais dispositivos de armazenamento, o servidor configurado para implementar um plata- forma de mensagens sociais;
receber uma resposta à solicitação de conteúdo do servidor de forma incremental em múltiplos fragmentos de uma camada de transporte de uma pilha de rede em um ou mais computadores, em que os múltiplos fragmentos constituem toda a resposta, em que a resposta inclui itens de conteúdo e metadados que descrevem os itens de conteúdo, e em que cada item de conteúdo pode ser renderizado e definido por um ou mais objetos de dados; renderizar de forma incremental, em um buffer de exibição, os itens de conteúdo nos fragmentos à medida que os fragmentos são recebidos, incluindo colocar os itens de conteúdo no buffer de exibição em uma ordem determinada pelos metadados, o buffer de exibição sendo uma estrutura de dados em uma memória de um ou mais com- putadores; e exibir todo o buffer de exibição ou parte deste em uma tela de um ou mais computadores.
24. Sistema, caracterizado pelo fato de compreender: um ou mais computadores e um ou mais dispositivos de armazenamento configurados para implementar uma plataforma de mensagens sociais, um ou mais dispositivos de armazenamento que armazenam instruções que, quando executadas por um ou mais com- putadores, fazem com um ou mais computadores executem as opera- ções que compreendem: receber uma solicitação de conteúdo do software do cliente da plataforma de mensagens sociais, o software do cliente sendo exe- cutado em um dispositivo do usuário; obter (i) itens de conteúdo que correspondem à solicitação de conteúdo, (ii) metadados que descrevem os itens de conteúdo, e (iii) dados necessários para renderizar os itens de conteúdo, em que os metadados que descrevem os itens de conteúdo incluem, para ca- da item de conteúdo, um identificador de sequência que especifica uma localização em um buffer de exibição do dispositivo do usuário onde o item de conteúdo deve ser renderizado em relação a outros itens de conteúdo;
gerar uma resposta à solicitação de conteúdo, incluindo:
colocar os metadados em um fragmento inicial da resposta, e colocar os dados necessários para renderizar cada item de conteúdo em um ou mais objetos de dados que definem o item de con- teúdo em um ou mais objetos de dados que definem um item de con- teúdo que precede o item de conteúdo na resposta; e enviar a resposta para o software de cliente.
” À ” Dispositivo do Dispositivo do usuário usuário Software do cliente Software do cliente ... Módulo de renderização Módulo de renderização progressiva progressiva 108a 108n 106a 106n 104n / Rede SN 120 Postar A x Receber mensagens. mensagens. 122 124 Servidor da plataforma Servidor da plataforma ... Módulo de dispensa Módulo de dispensa 112a 112m 110a 110m Plataforma de mensagens sociais online 100
Obter itens de conteúdo e metadados que descreem os itens de conteúdo. 210 Colocar metadados que descrevem os itens de conteúdo em um fragmento inicial da resposta 220 | Colocar os itens de conteúdo depois dos metadados. |
N Enviar uma solicitação de conteúdo para um servidor. 310 Receber de forma incremental fragmentos de uma resposta, os fragmentos incluindo itens de conteúdo e metadados.
Renderizar de forma incremental os itens de conteúdo em um buffer de exibição em uma ordem especificada pelos metadados. 330 Exibir todo o buffer de exibição ou parte deste em uma tela do dispositivo do usuário.
Obter um próximo fragmento de uma resposta DN Não Determinar se o fragmento inclui uma porção inicial de um novo item de conteúdo. 420 sim Determinar se fragmentos obtidos incluem todo o item de conteúdo novo.
Sim ——— 430 Não Montar porções do item de conteúdo, Obter um próximo fragmento da resposta. caso necessário. 450 440 Renderizar o item de conteúdo em um buffer de exibição. 460
BR112021004736A 2018-09-19 2019-09-19 Respostas progressivas de api BR112021004736A8 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/136,093 US20200089779A1 (en) 2018-09-19 2018-09-19 Progressive API Responses
US16/136,093 2018-09-19
PCT/US2019/052019 WO2020061373A1 (en) 2018-09-19 2019-09-19 Progressive api responses

Publications (2)

Publication Number Publication Date
BR112021004736A2 true BR112021004736A2 (pt) 2021-06-01
BR112021004736A8 BR112021004736A8 (pt) 2022-11-22

Family

ID=68136541

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021004736A BR112021004736A8 (pt) 2018-09-19 2019-09-19 Respostas progressivas de api

Country Status (8)

Country Link
US (2) US20200089779A1 (pt)
EP (1) EP3854036A1 (pt)
JP (1) JP7217342B2 (pt)
KR (1) KR20210089145A (pt)
CN (1) CN112913195A (pt)
BR (1) BR112021004736A8 (pt)
DE (1) DE202019005788U1 (pt)
WO (1) WO2020061373A1 (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11170064B2 (en) * 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US20230359483A1 (en) * 2020-12-25 2023-11-09 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for applet page rendering, electronic device and storage medium

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
JP2004287631A (ja) 2003-03-20 2004-10-14 Konami Co Ltd ダウンロードサービスシステム、端末、指令列の実行方法、ならびに、プログラム
US20040237082A1 (en) * 2003-05-22 2004-11-25 Alcazar Mark A. System, method, and API for progressively installing software application
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US9990439B2 (en) * 2007-08-14 2018-06-05 Nbcuniversal Media, Llc Flexible method and system for providing digital content
US20090049373A1 (en) * 2007-08-14 2009-02-19 Nbc Universal, Inc. Method and system for user receipt of digital content
CN101802823A (zh) * 2007-08-20 2010-08-11 诺基亚公司 用于流式多媒体数据的分段的元数据和位标
US20090089448A1 (en) * 2007-09-28 2009-04-02 David Sze Mobile browser with zoom operations using progressive image download
US20100070643A1 (en) * 2008-09-11 2010-03-18 Yahoo! Inc. Delivery of synchronized metadata using multiple transactions
US9043276B2 (en) * 2008-10-03 2015-05-26 Microsoft Technology Licensing, Llc Packaging and bulk transfer of files and metadata for synchronization
US8996547B2 (en) * 2008-10-31 2015-03-31 Microsoft Technology Licensing, Llc Dynamic fragmentation of digital media
US20100115575A1 (en) * 2008-11-03 2010-05-06 At&T Intellectual Property I, L.P. System and method for recording and distributing media content
US8412841B1 (en) * 2009-08-17 2013-04-02 Adobe Systems Incorporated Media content streaming using stream message fragments
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8631436B2 (en) * 2009-11-25 2014-01-14 Nokia Corporation Method and apparatus for presenting media segments
WO2011066691A1 (en) * 2009-12-04 2011-06-09 Streamocean, Inc. System and method to deliver multimedia content for display through network
US8321426B2 (en) * 2010-04-30 2012-11-27 Hewlett-Packard Development Company, L.P. Electronically linking and rating text fragments
US20130080268A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Multi-platform media syndication customization
US8863165B2 (en) * 2010-11-01 2014-10-14 Gracenote, Inc. Method and system for presenting additional content at a media system
US20120131609A1 (en) * 2010-11-19 2012-05-24 Media Patents, S.L. Methods, apparatus and systems for delivering and receiving data
US9860572B2 (en) * 2011-06-08 2018-01-02 Koninklijke Kpn N.V. Spatially segmented content delivery
US9256859B2 (en) * 2011-07-26 2016-02-09 Salesforce.Com, Inc. Systems and methods for fragmenting newsfeed objects
US20130080579A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Dynamically-executed syndication services
US20130230292A1 (en) * 2012-03-02 2013-09-05 Care Cam Innovations, Llc Apparatus, Method and Computer-Readable Storage Medium for Media Processing and Delivery
US9276989B2 (en) * 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US20130285937A1 (en) * 2012-04-27 2013-10-31 Mobitv, Inc Connected multi-screen video management
US20140123159A1 (en) * 2012-10-31 2014-05-01 Telefonaktiebolaget L M Ericsson (Publ) Providing Content On Demand
TW201427354A (zh) 2012-12-19 2014-07-01 Hon Hai Prec Ind Co Ltd 漸進式資料編碼傳輸系統及方法
US11233841B2 (en) * 2013-03-15 2022-01-25 Yottaa, Inc. Systems and methods for configuration-based optimization by an intermediary
US9710469B2 (en) * 2013-03-15 2017-07-18 Comcast Cable Communications, Llc Efficient data distribution to multiple devices
US9432427B2 (en) * 2013-07-25 2016-08-30 Futurewei Technologies, Inc. System and method for effectively controlling client behavior in adaptive streaming
KR20150029913A (ko) * 2013-09-11 2015-03-19 한국전자통신연구원 청크 단위로 콘텐트를 전달하는 콘텐트 시스템 및 방법
WO2015041711A1 (en) * 2013-09-20 2015-03-26 Yottaa, Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US10178147B1 (en) 2014-01-02 2019-01-08 Instart Logic, Inc. Client-side location address translation
EP3105903B1 (en) * 2014-02-13 2019-08-07 Koninklijke KPN N.V. Requesting multiple chunks from a network node on the basis of a single request message
US10423481B2 (en) * 2014-03-14 2019-09-24 Cisco Technology, Inc. Reconciling redundant copies of media content
US9483780B2 (en) * 2014-03-27 2016-11-01 Google Inc. Providing content using integrated objects
FR3019428A1 (fr) * 2014-03-31 2015-10-02 Orange Dispositif et procede de commande a distance de la restitution de contenus multimedia
WO2016057188A1 (en) * 2014-10-09 2016-04-14 Wrap Media, LLC Active receipt wrapped packages accompanying the sale of products and/or services
US11303691B2 (en) * 2015-02-02 2022-04-12 Vmware, Inc. Streaming progress updates and results of rest API operations
US10223136B2 (en) * 2016-09-30 2019-03-05 Salesforce.Com, Inc. Generating content objects using an integrated development environment
US10157102B2 (en) * 2016-12-29 2018-12-18 Whatsapp Inc. Techniques to scan and reorganize media files to remove gaps
JP6747303B2 (ja) 2017-01-13 2020-08-26 富士通株式会社 通信装置、通信システム、通信方法、および、通信プログラム
US10999391B2 (en) * 2017-10-30 2021-05-04 Sony Interactive Entertainment LLC Dynamic filtering and amelioration of content stream manifests

Also Published As

Publication number Publication date
JP2022500785A (ja) 2022-01-04
DE202019005788U1 (de) 2022-01-31
EP3854036A1 (en) 2021-07-28
WO2020061373A1 (en) 2020-03-26
US20200089779A1 (en) 2020-03-19
US20230021023A1 (en) 2023-01-19
BR112021004736A8 (pt) 2022-11-22
CN112913195A (zh) 2021-06-04
JP7217342B2 (ja) 2023-02-02
KR20210089145A (ko) 2021-07-15

Similar Documents

Publication Publication Date Title
US9967276B2 (en) Comment ordering system
US10104164B2 (en) Aggregating plug-in requests for improved client performance
US10212211B2 (en) File sharing via link generation
JP6426630B2 (ja) 写真の促される共有
KR101569425B1 (ko) 추출 연산자를 이용한 검색 방법 및 시스템
US20180096071A1 (en) Search Ranking and Recommendations for Online Social Networks based on Reconstructed Embeddings
JP2018152109A (ja) オフライン・コンテンツの生成
US20130097238A1 (en) Platform-Specific Notification Delivery Channel
US10063662B2 (en) Method and system for establishing a trust association
KR102206494B1 (ko) 내장된 미디어에 관련하여 부가 콘텐트를 제공
US20230021023A1 (en) Progressive api responses
BR112021015962A2 (pt) Composição de mensagens de mídia social que se referem a mensagens múltiplas
US10382500B2 (en) Systems and methods for binding online content accounts
US9256343B1 (en) Dynamically modifying an electronic article based on commentary
US10021210B1 (en) Providing faster data access using multiple caching servers
US9703802B1 (en) Web-native maintained media file format
JP7242669B2 (ja) 複数のデバイスにわたるコンテンツを提供すること
US20160342457A1 (en) Processing a request for a web resource
US20200112622A1 (en) Client Software Back Off
US9830397B2 (en) Method and computer-based system for processing a search query from a user associated with an electronic device
US9497251B2 (en) Serving of web pages according to web site launch times
US11025570B2 (en) Dynamic and secure real-time notifications in messages