BR112019024309A2 - editar base de dados durante visualização de página da web virtual - Google Patents

editar base de dados durante visualização de página da web virtual Download PDF

Info

Publication number
BR112019024309A2
BR112019024309A2 BR112019024309-7A BR112019024309A BR112019024309A2 BR 112019024309 A2 BR112019024309 A2 BR 112019024309A2 BR 112019024309 A BR112019024309 A BR 112019024309A BR 112019024309 A2 BR112019024309 A2 BR 112019024309A2
Authority
BR
Brazil
Prior art keywords
data
site
web page
code
virtual
Prior art date
Application number
BR112019024309-7A
Other languages
English (en)
Inventor
Uval A Blumenfeld
Amit Kaufman
Shay Weiner
Yoav ABRAHAMI
Original Assignee
Wix.Com Ltd.
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 Wix.Com Ltd. filed Critical Wix.Com Ltd.
Publication of BR112019024309A2 publication Critical patent/BR112019024309A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9558Details of hyperlinks; Management of linked annotations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/128Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

As modalidades divulgadas se referem à atualização de um banco de dados de back-end contendo conjuntos de dados que preenchem uma pluralidade de páginas da web de um site. As operações incluem receber através de uma interface do usuário uma pluralidade de elementos de dados; armazenar grupos de pelo menos um elemento de dados em um banco de dados; gerar uma pluralidade de páginas da web virtuais, em que cada página da web virtual é uma visualização de uma página da web real correspondente antes que a página da web real correspondente seja ativada; exibir cada grupo de pelo menos um elemento de dados em um separado da pluralidade de páginas da web virtuais; exibir uma ferramenta de edição para permitir que um usuário edite uma página da web virtual a partir da pluralidade de páginas da web virtuais; converter as edições na página virtual da web em atualizações para o banco de dados; armazenar as atualizações no banco de dados; e habilitar uma exibição na página da web real correspondente com as atualizações.

Description

“EDITAR BASE DE DADOS DURANTE VISUALIZAÇÃO DE PÁGINA DA WEB VIRTUAL” RELATÓRIO DESCRITIVO REFERÊNCIA REMISSIVA A PEDIDOS RELACIONADOS
[0001] Este pedido reivindica prioridade ao Pedido Provisório US 62/536.403, depositado em 24 de julho de 2017 e Pedido Provisório US 62/702.278, depositado em 23 de julho de 2018, cuja totalidade é aqui incorporada por referência.
[0002] Este pedido também geralmente se refere e incorpora por referência na sua totalidade os seguintes pedidos: Pedido US 13/596.146, depositado em 28 de agosto de 2012; Pedido US 13/771.119, depositado em 20 de fevereiro de 2013; Pedido US 13/779.798, depositado em 28 de fevereiro de 2013; Pedido US 13/786.488, depositado em 6 de março de 2013; Pedido US 13/959.759, depositado em 6 de agosto de 2013; Pedido US 15/339.984, depositado em 1 de novembro de 2016; Pedido US 14/053.614, depositado em 15 de outubro de 2013; Pedido US 15/233.987, depositado em 11 de agosto de 2016; Pedido US 14/176.166, depositado em 10 de fevereiro de 2014; Pedido US 14/207.761, depositado em 13 de março de 2014; Pedido US 14/483.981, depositado em 11 de setembro de 2014; Pedido US 14/559.943, depositado em 4 de dezembro de 2014; Pedido US 14/619.903, depositado em 11 de fevereiro de 2015; Pedido US 15/706.789, depositado em 18 de setembro de 2017; Pedido US 14/207.930, depositado em 13 de março de 2014; Pedido US 15/657.156, depositado em 23 de julho de 2017; Pedido US 14/699.828, depositado em 29 de abril de 2015; Pedido US 15/653.568, depositado em 19 de julho de 2017; Pedido US 14/926.007, depositado em 29 de outubro de 2015; Pedido US
14/619.145, depositado em 11 de fevereiro de 2015; Pedido US No 15/708.160, depositado em 19 de setembro de 2017; Pedido US 15/168.295, depositado em 31 de maio de 2016; Pedido US 15/175.272, depositado em 7 de junho de 2016; Pedido US 15/224.616, depositado em 31 de julho de 2016; Pedido US 15/292.172, depositado em 13 de outubro de 2016; Pedido US 15/224.579, depositado em 31 de julho de 2016; Pedido US 16/000.907, depositado em 6 de junho de 2018; Pedido US 15/607.586, depositado em 29 de maio de 2017; Pedido US15/661.342, depositado em 27 de julho de 2017; Pedido US 15/850.151, depositado em 21 de dezembro de 2017; Pedido US 16/002.356, depositado em 7 de junho de 2018; Pedido Provisório US 62/591.297, depositado em 28 de novembro de 2017; Pedido Provisório US 62/624.824, depositado em 1 de fevereiro de 2018; Pedido Provisório US 62/626.093, depositado em 4 de fevereiro de 2018; e Pedido Provisório US 62/647.736, depositado em 25 de fevereiro de 2018.
ANTECEDENTES
[0003] Esta divulgação se refere a sistemas de criação de sites para a criação de sites indexáveis e aplicativos da web que integram a funcionalidade de back-end personalizada em execução em um sistema totalmente gerenciado por terceiros. Por exemplo, as modalidades incluem o desenvolvimento de funcionalidades de back-end personalizadas que podem ser executadas no ambiente de servidor sem estado (como contêineres, código sem servidor ou máquinas virtuais) quando um evento programável associado a um componente de front- end ou atividade do sistema é acionado sem que o usuário do sistema tenha que se envolver no gerenciamento da interação cliente-servidor.
[0004] Além disso, esta divulgação se refere à carga de hospedagem e gerenciamento de um site, fornecendo instâncias de execução sob demanda do site ou páginas da web individuais instantaneamente. As instâncias podem, em algumas modalidades, ser geradas como máquinas virtuais, contêineres ou elementos de código sem servidor. Mais especificamente, esta divulgação se refere a sistemas e métodos para monitorar a carga e a atividade de sites hospedados, a fim de adicionar e remover automaticamente instâncias que atendem a sites hospedados no sistema sem demora significativa na resposta a uma solicitação de veiculação de um site. Além disso, os sites hospedados podem ser compostos por uma combinação de código genérico e específico do site.
[0005] Ainda mais, a divulgação se refere à visualização e teste de sites com acesso em tempo real aos dados gerados em um ambiente de produção para e pelo usuário final do site e aos dados vinculados ao site. Mais especificamente, esta divulgação se refere ao fornecimento de acesso a dados geralmente vistos por um usuário final de um site para testar a funcionalidade e a experiência de um site por um programador ou designer do site.
[0006] Além disso, esta divulgação se refere à edição de um banco de dados durante a visualização de uma página da web virtual. Por exemplo, os usuários podem armazenar grupos de elementos de dados (por exemplo, texto, gráficos, vídeos etc.) em um banco de dados e uma ou mais páginas da web virtuais podem ser geradas para exibir uma visualização das páginas da web. Durante a exibição das páginas da web virtuais, os usuários podem ter permissão para editar a página da web virtual e suas edições podem ser traduzidas em atualizações para o banco de dados. Além disso, durante uma exibição em tempo real de uma página da web real correspondente à página da web virtual, as atualizações no banco de dados podem ser refletidas na exibição em tempo real exibida.
[0007] Os sistemas de criação de sites, conforme aqui divulgados, são usados para permitir que pessoas com experiência limitada em desenvolvimento de software e/ou recursos limitados desenvolvam e hospedem um site personalizado. Os sistemas convencionais de desenvolvimento de sites, por outro lado, oferecem uma UI de front-end de modelo com controle de back-end inexistente ou limitado por meio de chamadas para serviços externos ou trechos de código incorporados que chamam o código do lado do servidor, limitando o sistema a páginas da web sem opções mínimas ou para manipulação de dados ou outra funcionalidade personalizada. Espera-se que outros sistemas sejam totalmente envolvidos na configuração das interações cliente-servidor para acessar o controle total do back-end .
[0008] Os sistemas convencionais de desenvolvimento de sites não têm a capacidade de criar layouts de páginas da web a serem preenchidas com dados para criar várias páginas dinâmicas que podem ser indexadas. Além disso, os sistemas convencionais não têm a capacidade de integrar roteadores baseados em software para páginas da web, o que pode permitir que as páginas da web contenham conteúdo ou funcionem de maneira diferente, dependendo de como o usuário chegou às páginas da web ou interage com eles. Os sistemas convencionais também não têm a capacidade de monitorar a interação de um usuário do site e mostrar resultados resultantes com base na funcionalidade registrada anterior associada a essas interações.
[0009] Os sistemas de hospedagem de sites gerenciados convencionais são usados para atender solicitações a um site, usando servidores dedicados, que custam dinheiro e recursos significativos para se manterem prontos e operacionais, ou usando um início frio de novas instâncias quando um novo site é solicitado ou a carga de um determinado site. O site ultrapassa certo limite de atraso na resposta a uma solicitação. Esse processo de inicialização a frio de novas instâncias de um site ou páginas da web implica um atraso substancial no processamento e consequente latência na experiência do usuário.
[00010] Os sistemas convencionais de desenvolvimento de sites também são limitados em termos de capacidade de permitir que os usuários editem dinamicamente visualizações de páginas. Esses sistemas também não conseguem receber edições em uma página visualizada e convertem essas edições em atualizações para um banco de dados no qual todas ou partes da página são baseadas. Como resultado, o uso desses sistemas convencionais envolve mais ação do usuário, mais largura de banda e operações mais complicadas.
[00011] Os sistemas de teste de sites, conforme divulgados neste documento, podem ser configurados para criar uma experiência realista de uso do site por um usuário final sem interromper a experiência do usuário final. Os sistemas convencionais de teste de sites, no entanto, fornecem uma interface de visualização limitada para revisar o site da maneira que um usuário final experimentaria no site, mas eles não têm uma maneira de fornecer acesso em tempo real aos dados gerados no site que está sendo testado. Os sistemas convencionais também não têm a capacidade de adicionar novos dados e excluir dados gerados para o site sem afetar a experiência do usuário final.
[00012] Os sistemas convencionais de hospedagem de sites também são vulneráveis a plug-ins (por exemplo, software que pode ser integrado ao front-end ou back-end de um site) que contêm código malicioso (por exemplo, malware). Quando esse código é carregado por um proprietário ou usuário de um site, ele pode se espalhar pelo sistema de hospedagem de sites para afetar sites de outros proprietários ou usuários. Os sistemas convencionais de hospedagem de sites não têm a capacidade de isolar plug-ins enviados e impedi-los de infectar outros sites que geralmente são hospedados pelo sistema.
[00013] Desta forma, são necessárias soluções tecnológicas para novos sistemas de desenvolvimento de sites para gerenciar a funcionalidade de back-end , para oferecer a liberdade de ter mais personalização do site e sem envolver um usuário na configuração do servidor, provisionamento ou interações servidor-cliente. Além disso, é necessário fornecer ferramentas tecnológicas aos usuários para a criação de sites personalizados, inclusive com recursos de codificação personalizados, sem exigir que os usuários codifiquem sites inteiros do zero.
[00014] Além disso, são necessárias soluções tecnológicas para um novo sistema sob demanda para lidar com solicitações de sites sem demora significativa. Essas soluções tecnológicas devem utilizar recursos de computação virtual, como máquinas virtuais, contêineres, código sem servidor etc. Além disso, essas soluções devem permitir sites altamente personalizados, incluindo recursos comuns em muitas páginas ou sites, além de recursos exclusivos para páginas ou sites específicos.
[00015] Além disso, também são necessárias soluções tecnológicas para um novo sistema de teste de sites com acesso em tempo real aos dados disponíveis para produção.
[00016] Além disso, são necessárias soluções tecnológicas para isolar plug-ins enviados e impedir que eles infectem sites co- hospedados. Essas técnicas devem ser capazes de isolar os plug-ins de front-end e back-end , enquanto ainda permitem que esses plug-ins sejam carregados e utilizados pelos proprietários e usuários do site.
SUMÁRIO
[00017] Certas modalidades da presente divulgação se referem a um sistema para a criação de um site. O sistema pode incluir um sistema de criação de sites online configurado para permitir que os construtores de sites adicionem funcionalidade de back-end a um site hospedado centralmente, o site hospedado centralmente incluindo uma ou mais páginas indexáveis por um mecanismo de pesquisa. O sistema online pode permitir a edição e a visualização dinâmica de páginas para usar um banco de dados online comum, que designers e usuários podem acessar simultaneamente. O sistema pode compreender um banco de dados online configurado para armazenar uma biblioteca de elementos de construção de sites para configurar um front-end de uma página da web indexável, bem como pelo menos um processador configurado para executar determinadas operações. As operações podem incluir a transmissão de primeiras instruções para um navegador da web remoto de um usuário, as primeiras instruções que permitem ao usuário acessar remotamente a biblioteca armazenada por meio de uma interface unificada, exibida pelo navegador da web remoto, e permitir que o usuário utilize uma seleção do edifício elementos para construir o front-end da página da web indexável, em que a interface unificada fornece ao usuário acesso aos elementos de construção e funcionalidade de back-end personalizada associada à página da web indexável; habilitar, por meio da interface unificada, exibida pelo navegador da web remoto, o usuário para configurar um evento programável para ativar o código editável pelo usuário, fornecendo funcionalidade de back-end personalizada associada à página da web indexável; receber, por meio da interface unificada, edições do usuário no código editável pelo usuário para implementar a funcionalidade de back-end personalizada associada ao evento programável; armazenar o código editável pelo usuário editado em um sistema de armazenamento de código em comunicação com o banco de dados online; e em resposta a um gatilho associado ao evento programável, executando o código editável pelo usuário editado para implementar a funcionalidade de back-end personalizada.
[00018] Em algumas modalidades, o sistema inclui a execução do código editável pelo usuário editado para implementar a funcionalidade de back-end personalizada com base em um gancho que causa a execução do código editável pelo usuário editado.
[00019] Além disso, em algumas modalidades, o gancho é um gancho da web, um gancho de dados ou um gancho do roteador de ligação de dados.
[00020] Ainda mais, em algumas modalidades, o pelo menos um processador é ainda configurado para gerar automaticamente, com base nas regras armazenadas no banco de dados online, código esqueleto associado a um elemento de criação de site selecionado pelo usuário e transmitir o código esqueleto ao navegador remoto da web para ativar o código do esqueleto.
[00021] Além disso, em algumas modalidades, o sistema inclui uma função associada ao elemento de criação de site selecionado pelo usuário e um trecho de código associado à função como parte do código de esqueleto gerado automaticamente.
[00022] Além disso, em algumas modalidades, o sistema inclui uma interface unificada que pode ser exibida por um navegador da web remoto, que por sua vez inclui uma janela de edição de site de front-end e uma janela de edição de back-end personalizada.
[00023] Além disso, em algumas modalidades, o sistema inclui um gatilho para a atividade de dados envolvendo um conjunto de dados específico que está associado à funcionalidade de back-end customizada.
[00024] Além disso, em algumas modalidades, o sistema inclui um gatilho para uma atualização inserida na página indexável.
[00025] Além disso, em algumas modalidades, o sistema inclui um gatilho para uma transição de página na página da web indexável.
[00026] Além disso, em algumas modalidades, o sistema inclui um gatilho para uma interação definida entre o usuário e a página da web indexável.
[00027] Além disso, em algumas modalidades, o pelo menos um processador é ainda configurado para executar o código editável pelo usuário editado para implementar uma pluralidade de funcionalidades de back-end personalizadas em resposta ao gatilho associado ao evento programável.
[00028] Ainda de acordo com algumas modalidades, o pelo menos um processador é ainda configurado para executar o código editável pelo usuário editado para implementar uma funcionalidade de back-end personalizada em resposta a uma pluralidade de gatilhos associados a uma pluralidade de eventos programáveis.
[00029] Adicionalmente, de acordo com algumas modalidades, o sistema inclui um sistema de armazenamento de código configurado para armazenar código para um roteador baseado em software que lida com solicitações de entrada de clientes na página indexável.
[00030] Além disso, em algumas modalidades, o sistema inclui um sistema de armazenamento que é um banco de dados online e um sistema de armazenamento de código.
[00031] Certas modalidades são relacionadas a um método implementado por computador para criar um site usando a funcionalidade de back-end personalizada. O método pode incluir manter um conjunto de bases online configurado para armazenar uma biblioteca de elementos de criação de site para configurar um front-end de uma página web indexável; transmitir primeiras instruções a um navegador da web remoto de um usuário, as primeiras instruções que permitem ao usuário acessar remotamente a biblioteca armazenada por meio de uma interface unificada, exibida pelo navegador da web remoto, e permitir que o usuário utilize uma seleção do edifício elementos para construir o front-end da página da web indexável, em que a interface unificada fornece ao usuário acesso aos elementos de construção e funcionalidade de back-end personalizada associada à página da web indexável; habilitar, por meio da interface unificada, exibida pelo navegador da web remoto, o usuário para configurar um evento programável para ativar o código editável pelo usuário, fornecendo funcionalidade de back-end personalizada associada à página da web indexável; receber, por meio da interface unificada, edições do usuário no código editável pelo usuário para implementar a funcionalidade de back-end personalizada associada ao evento programável; armazenar o código editável pelo usuário editado em um sistema de armazenamento de código em comunicação com o banco de dados online; e em resposta a um gatilho associado ao evento programável, executando o código editável pelo usuário editado para implementar a funcionalidade de back-end personalizada.
[00032] Além disso, em algumas modalidades, o método inclui obter dados externos ao banco de dados online e externos ao navegador da web remoto para uso na execução do código editável pelo usuário editado para implementar a funcionalidade de back-end personalizada em resposta ao gatilho.
[00033] Além disso, de acordo com algumas modalidades, o método inclui fornecer ao usuário acesso a pelo menos algumas partes do código editável pelo usuário para edição na forma de segmentos de código selecionáveis.
[00034] Ainda mais, de acordo com algumas modalidades, o método inclui executar o código editável pelo usuário editado para implementar a funcionalidade de back-end personalizada com base em um gancho que causa a execução do código editável pelo usuário editado.
[00035] Além disso, de acordo com algumas modalidades, o método inclui um gancho que é um gancho da web, ou um gancho de dados ou um gancho de roteador de ligação de dados.
[00036] Além disso, de acordo com algumas modalidades, o método inclui gerar código de esqueleto associado a um elemento de criação de site selecionado pelo usuário por pelo menos um processador com base em regras armazenadas no banco de dados online e a transmissão do código de esqueleto ao navegador da web remoto para ativar o código do esqueleto.
[00037] Além disso, de acordo com algumas modalidades, o código de esqueleto gerado automaticamente inclui uma função associada a um elemento de construção selecionado pelo usuário e um trecho de código associado à função.
[00038] Além do mais, em algumas modalidades, o método inclui prover uma interface unificada que pode ser exibida por um navegador da web remoto, que inclui uma janela de edição de site de front-end e uma janela de edição de back-end personalizada.
[00039] Ainda, em algumas modalidades, o método inclui um gatilho para a atividade de dados envolvendo um conjunto de dados específico que está associado à funcionalidade de back-end customizada.
[00040] Além disso, em algumas modalidades, o método inclui um gatilho para uma atualização inserida na página da web indexável.
[00041] Além disso, em algumas modalidades, o método inclui um gatilho para uma interação definida entre o usuário e a página da web indexável.
[00042] Certas modalidades estão relacionadas a um sistema para atribuição sob demanda de uma instância de execução de servidor da web para um servidor de site. O sistema pode incluir pelo menos um primeiro local de memória armazenando código genérico de servidor de site para hospedar uma pluralidade de sites e pelo menos um segundo local de memória armazenando, de maneira segregada a partir do primeiro local de memória, código específico do site exclusivo para cada um da pluralidade de sites. O sistema pode ainda incluir pelo menos um processador configurado para executar operações, inclusive para controlar uma pluralidade de instâncias de execução de servidor da web, pelo menos algumas das instâncias que executam código específico do site exclusivo para pelo menos um entre a pluralidade de sites e pelo menos outros das instâncias de execução do servidor da web que executam o código genérico do servidor do site sem o código exclusivo específico de qualquer site; receber uma solicitação para acessar um site específico, o site específico tendo sido construído em uma plataforma, incluindo o código genérico do servidor do site; determinar se o site específico já está hospedado por uma das várias instâncias de execução do servidor da web; e quando for determinado que o site específico solicitado ainda não está hospedado em uma das várias instâncias de execução do servidor da web: direcione a solicitação para uma primeira entre a pluralidade de instâncias de execução do servidor da web executando o código genérico do servidor do site; injetar na primeira entre a pluralidade de instâncias de execução de servidor da web executando o código genérico do servidor do site, código específico adicional do site exclusivo ao site solicitado a partir de pelo menos um segundo local de memória; e responda à solicitação, através da primeira entre a pluralidade de instâncias de execução do servidor da web, através de uma combinação do código genérico do servidor do site e do código específico do site injetado, exclusivo para o site solicitado.
[00043] Em algumas modalidades, o sistema pode incluir uma pluralidade de instâncias de execução de servidor da web que, por sua vez, podem incluir um ou mais contêineres, máquinas virtuais ou processos de máquinas físicas.
[00044] Além disso, em algumas modalidades, a solicitação é uma solicitação HTTP e o sistema inclui uma operação para responder à solicitação que é executada antes que a solicitação expire.
[00045] Além disso, em algumas modalidades, o sistema inclui uma operação para responder à solicitação que é executada dentro de 100 ms após o recebimento da solicitação.
[00046] Além disso, em algumas modalidades, o sistema inclui um servidor proxy para lidar com solicitações HTTP, incluindo as operações para receber e determinar.
[00047] Além disso, em algumas modalidades, a operação para determinar ainda inclui consultar um gerenciador de instância de execução do servidor da web para saber se o site específico já está hospedado por uma entre a pluralidade de instâncias de execução do servidor da web.
[00048] Além disso, em algumas modalidades, a operação para determinar ainda inclui encaminhar a solicitação para um gerenciador de instância de execução de servidor da web e, se a solicitação falhar, determinar a partir daí que o site específico solicitado não está atualmente hospedado por uma entre a pluralidade de execução do servidor da web instâncias.
[00049] Além disso, em algumas modalidades, a operação para determinar inclui determinar, com base em uma tabela de estado, que o site específico já está hospedado por uma entre a pluralidade de instâncias de execução de servidor da web.
[00050] Além disso, em algumas modalidades, o sistema inclui uma tabela de estado mantida em um servidor proxy e identifica uma lista de sites já hospedados por uma entre a pluralidade de instâncias de execução de servidor da web.
[00051] Além disso, em algumas modalidades, o sistema inclui operações para atualizar a tabela de estados para remover um site inativo da lista com base em um período predeterminado de inatividade das solicitações associadas ao site inativo.
[00052] Além disso, em algumas modalidades, o código específico do site adicional exclusivo para o site solicitado inclui código de back- end exclusivo para o site solicitado.
[00053] Além disso, em algumas modalidades, o código específico do site adicional exclusivo para o site solicitado inclui o código associado a um plug-in referenciado pelo site solicitado.
[00054] Além disso, em algumas modalidades, as operações compreendem ainda monitorar um conjunto de instâncias de execução do servidor da web que ainda não hospeda um site específico e quando o tamanho do conjunto de instâncias de execução do servidor da web for menor que um limite, instruir um gerenciador da instância de execução do servidor da web para ativar instâncias adicionais de execução de servidores da web.
[00055] Além disso, em algumas modalidades, as operações compreendem ainda monitorar um conjunto de instâncias de execução do servidor da web que ainda não hospeda um site específico e quando o tamanho do conjunto de instâncias de execução do servidor da web for maior que um limite, instruir um gerenciador de instância de execução do servidor da web para desligar pelo menos uma instância de execução de servidor da web.
[00056] Certas modalidades da presente divulgação se referem a um método implementado por computador para atribuição sob demanda de uma instância de execução de servidor da web para um servidor de site. O método pode incluir armazenar, em um primeiro local de memória,
código do servidor do site genérico para hospedar uma pluralidade de sites; controlar uma pluralidade de instâncias de execução de servidor da web, pelo menos algumas das instâncias que executam código específico do site exclusivo para pelo menos um entre a pluralidade de sites e pelo menos outros das instâncias de execução do servidor da web que executam o código genérico do servidor do site sem o código exclusivo específico de qualquer site; receber uma solicitação para acessar um site específico, o site específico tendo sido construído em uma plataforma, incluindo o código genérico do servidor do site; determinar se o site específico já está hospedado por uma das várias instâncias de execução do servidor da web; e quando for determinado que o site específico solicitado ainda não está hospedado em uma das várias instâncias de execução do servidor da web: direcionar a solicitação para uma primeira entre a pluralidade de instâncias de execução do servidor da web executando o código genérico do servidor do site; injetar na primeira entre a pluralidade de instâncias de execução de servidor da web executando o código genérico do servidor do site, código específico adicional do site exclusivo ao site solicitado a partir de pelo menos um segundo local de memória; e responda à solicitação, através da primeira entre a pluralidade de instâncias de execução do servidor da web, através de uma combinação do código genérico do servidor do site e do código específico do site injetado, exclusivo para o site solicitado.
[00057] De acordo com algumas modalidades, a pluralidade de instâncias de execução de servidor da web pode incluir um ou mais contêineres, máquinas virtuais ou processo de máquina física.
[00058] Além disso, de acordo com algumas modalidades, a solicitação é uma solicitação HTTP e o método inclui a Etapa de responder à solicitação antes que a solicitação expire.
[00059] Além disso, de acordo com algumas modalidades, o método inclui a Etapa de responder à solicitação que está sendo executada dentro de 100 ms após o recebimento da solicitação.
[00060] Certas modalidades da presente divulgação se referem a um sistema para atribuição sob demanda de uma instância de execução de servidor da web para um servidor de site. O sistema pode compreender pelo menos um dispositivo de memória que armazena código genérico de servidor de site para hospedar uma pluralidade de sites e código específico de site exclusivo para cada um da pluralidade de sites; e pelo menos um processador configurado para executar operações. As operações podem incluir controlar uma pluralidade de instâncias de execução de servidor da web, pelo menos algumas das instâncias que executam código específico do site exclusivo para pelo menos um entre a pluralidade de sites e pelo menos outros das instâncias de execução do servidor da web que executam o código genérico do servidor do site sem o código exclusivo específico de qualquer site; receber uma solicitação para acessar um site específico, o site específico tendo sido construído em uma plataforma, incluindo o código genérico do servidor do site; determinar se o site específico já está hospedado por uma das várias instâncias de execução do servidor da web; e quando for determinado que o site específico solicitado ainda não está hospedado em uma das várias instâncias de execução do servidor da web: direcionar a solicitação para uma primeira entre a pluralidade de instâncias de execução do servidor da web executando o código genérico do servidor do site; injetar na primeira entre a pluralidade de instâncias de execução de servidor da web executando o código genérico do servidor do site, código específico adicional do site exclusivo ao site solicitado a partir de pelo menos um segundo local de memória; e responder à solicitação, através da primeira entre a pluralidade de instâncias de execução do servidor da web, através de uma combinação do código genérico do servidor do site e do código específico do site injetado, exclusivo para o site solicitado.
[00061] De acordo com algumas modalidades, a primeira entre a pluralidade de instâncias de execução de servidor da web executando o código genérico do servidor do site é configurada para obter o código específico do site adicional exclusivo do site solicitado a partir de pelo menos um dispositivo de memória com base em pelo menos um identificador do site solicitado incluído na solicitação.
[00062] Certas modalidades estão relacionadas a um sistema para executar simultaneamente dados em tempo real de um site em um ambiente de implantação de sites, além de executar dados de teste do site em um Ambiente de teste não público. O sistema pode incluir pelo menos um banco de dados comum que armazena os dados em tempo real do site e os dados de teste do site, em que os dados de teste estão associados em pelo menos um banco de dados comum aos dados em tempo real; e pelo menos um processador configurado para executar operações. As operações podem executar funções, incluindo acessar os dados em tempo real armazenados em pelo menos um banco de dados comum; usar os dados em tempo real acessados para renderizar o site no ambiente de implantação do site; receber uma solicitação para realizar testes no site enquanto o site estiver ativo no ambiente de implantação do site; acessar, pelo menos em um banco de dados comum, um conjunto de dados de teste responsivos à solicitação, o conjunto de dados de teste incluindo um ou mais elementos de dados de teste correspondentes aos respectivos elementos de dados em tempo real, em que o conjunto de dados de teste não está acessível no ambiente de implantação do site; e enquanto o site estiver operando no ambiente de implantação do site, testar o site em paralelo no Ambiente de teste de sites não públicos, de modo que tanto o conjunto de dados de teste quanto os dados em tempo real sejam usados simultaneamente pelo site no meio de teste do site não público.
[00063] De acordo com algumas modalidades, os dados de teste são associados aos dados em tempo real usando marcadores configurados para causar, durante o teste, elementos específicos de dados de teste para substituir elementos específicos de dados em tempo real.
[00064] Além disso, de acordo com algumas modalidades, os marcadores são configurados para serem excluídos após o teste.
[00065] Além disso, de acordo com algumas modalidades, os marcadores são indicativos de instruções para ignorar dados específicos em tempo real durante o teste.
[00066] Além disso, de acordo com algumas modalidades, o sistema é um ambiente de hospedagem de sites para hospedar uma pluralidade de sites gerados por uma pluralidade de usuários.
[00067] Além disso, de acordo com algumas modalidades, pelo menos um banco de dados comum é um banco de dados online centralizado configurado para armazenar dados em tempo real associados à pluralidade de sites gerados pela pluralidade de usuários.
[00068] Ainda, de acordo com algumas modalidades, os dados de teste incluem dados adicionados recentes não associados anteriormente aos dados em tempo real do site.
[00069] Além disso, de acordo com algumas modalidades, os dados de teste são ocultos do ambiente de implantação do site.
[00070] Além disso, de acordo com algumas modalidades, o sistema inclui dados de teste que respondem a uma solicitação para adicionar dados no Ambiente de teste de sites não públicos.
[00071] Além disso, de acordo com algumas modalidades, os dados de teste são criados em uma área de pelo menos um banco de dados comum oculto no ambiente de implantação do site.
[00072] Além disso, de acordo com algumas modalidades, o sistema inclui elementos de dados de teste correspondentes aos respectivos elementos de dados em tempo real incluem elementos de dados indicativos de uma alteração solicitada realizada em uma duplicata dos respectivos elementos de dados em tempo real.
[00073] Além disso, de acordo com algumas modalidades, o sistema inclui determinar os elementos de dados de teste correspondentes para os elementos de dados em tempo real solicitados a serem alterados e, quando existirem os respectivos elementos de dados de teste correspondentes, executar a alteração solicitada nos respectivos elementos de dados de teste correspondentes.
[00074] Além disso, de acordo com algumas modalidades, o sistema realiza o recebimento de uma consulta iniciada no Ambiente de teste de sites não públicos, respondendo à consulta com um ou mais dos elementos de dados em tempo real quando um ou mais elementos de dados em tempo real não estão associados com os respectivos elementos de dados de teste correspondentes e respondendo à consulta com um ou mais elementos de dados de teste quando um ou mais elementos de dados em tempo real estiverem associados aos respectivos elementos de dados de teste correspondentes.
[00075] Além disso, de acordo com algumas modalidades, o pelo menos um processador é ainda configurado para mesclar os dados de teste nos dados em tempo real, substituindo assim um ou mais dos elementos de dados em tempo real pelos respectivos elementos de dados de teste correspondentes.
[00076] Certas modalidades da presente divulgação se referem a um método implementado por computador para executar simultaneamente dados em tempo real de um site em um ambiente de implantação de sites, além de executar dados de teste do site em um Ambiente de teste não público. O método pode incluir armazenar os dados em tempo real do site e os dados de teste do site, em que os dados de teste estão associados em pelo menos um banco de dados comum aos dados em tempo real; acessar os dados em tempo real armazenados em pelo menos um banco de dados comum; usar os dados em tempo real acessados para entregar o site no ambiente de implantação do site; receber uma solicitação para realizar testes no site enquanto o site estiver ativo no ambiente de implantação do site; acessar, pelo menos em um banco de dados comum, um conjunto de dados de teste responsivos à solicitação, o conjunto de dados de teste incluindo um ou mais elementos de dados de teste correspondentes aos respectivos elementos de dados em tempo real, em que o conjunto de dados de teste não está acessível no ambiente de implantação do site; e enquanto o site estiver operando no ambiente de implantação do site, testar o site paralelamente no Ambiente de teste de sites não públicos, de modo que o conjunto de dados de teste e os dados em tempo real sejam usados simultaneamente pelo site no Ambiente de teste de sites não públicos.
[00077] De acordo com algumas modalidades, o método pode incluir associar os dados de teste aos dados em tempo real usando marcadores configurados para causar, durante o teste, elementos específicos de dados de teste para substituir os elementos específicos de dados em tempo real.
[00078] Além disso, de acordo com algumas modalidades, os marcadores são configurados para serem excluídos após o teste.
[00079] Ainda, de acordo com algumas modalidades, os marcadores são indicativos de uma instrução para ignorar os dados em tempo real, correspondentes específicos durante o teste.
[00080] Adicionalmente, de acordo com algumas modalidades, o método é realizado por um servidor configurado para fornecer um ambiente de hospedagem de site para hospedar uma pluralidade de sites gerados por uma pluralidade de usuários.
[00081] Além do mais, de acordo com algumas modalidades, os dados de teste são criados em uma área de pelo menos um banco de dados comum oculto no ambiente de implantação do site.
[00082] Certas modalidades da presente divulgação se referem a um sistema baseado em computador para executar simultaneamente dados de teste de um sistema de aplicativo visual em um Ambiente de teste não público, enquanto também executa dados em tempo real do sistema de aplicativo visual em um ambiente de implantação, o sistema baseado em computador compreendendo: pelo menos um banco de dados comum que armazena os dados em tempo real do sistema de aplicativo visual e os dados de teste do sistema de aplicativo visual, em que os dados de teste estão associados em pelo menos um banco de dados comum aos dados em tempo real; e pelo menos um processador configurado para: acessar os dados em tempo real do sistema de aplicativo visual armazenado em pelo menos um banco de dados comum; usar os dados em tempo real acessados do sistema de aplicativo visual no ambiente de implementação; receber uma solicitação para executar testes no sistema de aplicativo visual enquanto o sistema de aplicativo visual estiver ativo no ambiente de implementação; acessar, pelo menos em um banco de dados comum, um conjunto de dados de teste responsivos à solicitação, o conjunto de dados de teste incluindo um ou mais elementos de dados de teste correspondentes aos respectivos elementos de dados em tempo real, em que o conjunto de dados de teste não está acessível em o ambiente de implementação; e enquanto o sistema de aplicativo visual estiver ativo no ambiente de implementação, teste o sistema de aplicativo visual em paralelo no Ambiente de teste não público, de modo que o conjunto de dados de teste e os dados em tempo real sejam usados simultaneamente pelo sistema de aplicativo visual no Ambiente de teste público.
[00083] Além disso, de acordo com algumas modalidades, o sistema baseado em computador é pelo menos um entre um sistema de desenvolvimento de site e um sistema de desenvolvimento de código da fonte.
[00084] Certas modalidades da presente divulgação incluem um meio legível por computador contendo instruções que, quando executadas por pelo menos um processador, fazem com que pelo menos um processador execute determinadas instruções para atualizar um banco de dados back-end contendo conjuntos de dados que preenchem uma pluralidade de páginas da web de um site. As instruções podem executar operações para receber via interface do usuário, uma pluralidade de elementos de dados, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site; armazenar os grupos de pelo menos um elemento de dados em um banco de dados; gerar uma pluralidade de páginas da web virtuais, em que cada página da web virtual é uma visualização de uma página da web real correspondente antes que a página da web real correspondente seja ativada, em que cada uma das páginas da web reais correspondentes não é projetada com funcionalidade para atualizar o banco de dados; exibir cada grupo de pelo menos um elemento de dados em um grupo separado da pluralidade de páginas da web virtuais; exibir uma ferramenta de edição para permitir que um usuário edite uma página da web virtual a partir da pluralidade de páginas da web virtuais; converter as edições na página da web virtual em atualizações para o banco de dados; armazene as atualizações no banco de dados; e habilitar, durante uma exibição em tempo real de uma página da web real correspondente associada à página da web virtual, uma exibição da página da web real correspondente com as atualizações feitas na página da web virtual durante a visualização.
[00085] Além do mais, em algumas modalidades, cada uma da pluralidade de páginas da web virtuais é exibida dentro de um quadro associado a uma interface de editor da interface do usuário.
[00086] Em outras modalidades, as operações exibem um recurso selecionável pelo usuário que permite ao usuário navegar através da pluralidade de páginas da web virtuais para exibir individual e dinamicamente cada uma da pluralidade de páginas da web virtuais.
[00087] Em modalidades adicionais, as operações exibem um recurso selecionável pelo usuário que permite ao usuário selecionar uma página da web virtual específica a partir da pluralidade de páginas da web virtuais com base em um identificador da página da web virtual específica.
[00088] Em modalidades adicionais, o identificador da página da web virtual específica é baseado em um elemento de dados associado à página da web virtual específica.
[00089] Além do mais, de acordo com algumas modalidades, as operações incluem associar uma URL exclusiva a cada uma das várias páginas da web virtuais.
[00090] Em modalidades adicionais, cada uma da pluralidade de páginas da web virtuais é gerada com base em um mapa do site que faz referência à URL exclusiva de cada uma da pluralidade de páginas da web virtuais.
[00091] De acordo com algumas modalidades, a ferramenta de edição é configurada para receber edições nos grupos armazenados de pelo menos um elemento de dados no banco de dados.
[00092] Além do mais, em algumas modalidades, a ferramenta de edição é configurada para receber edições em atributos da pluralidade de páginas da web virtuais.
[00093] Em modalidades adicionais, a ferramenta de edição é configurada para receber edições no código que é usado para gerar a pluralidade de páginas da web virtuais.
[00094] Em modalidades adicionais, a ferramenta de edição é configurada para exibir uma pluralidade de segmentos do código de esqueleto que representa o código real usado para gerar a pluralidade de páginas da web virtuais e receber edições no código de esqueleto que são traduzidas em edições no código real.
[00095] Além do mais, em algumas modalidades, os elementos de dados são recebidos via interface do usuário de uma fonte externa.
[00096] Em modalidades adicionais, as operações compreendem ainda acessar um roteador baseado em software associado à pluralidade de páginas da web virtuais e configurar o roteador baseado em software para gerar uma versão diferente de cada uma da pluralidade de páginas da web virtuais com base em um ou mais segmentos de um URL recebido.
[00097] Em algumas modalidades, um subconjunto de cada grupo de pelo menos um elemento de dados é organizado por uma função repetidora, a função repetidora gerando uma ou mais instâncias exibidas do subconjunto de cada grupo de pelo menos um elemento de dados.
[00098] Além do mais, as modalidades adicionais incluem uma exibição em tempo real da página da web real correspondente que inclui uma ou mais instâncias.
[00099] Também divulgados neste documento são métodos implementados por computador para atualizar um banco de dados back-end contendo conjuntos de dados que preenchem uma pluralidade de páginas da web de um site. O método pode compreender receber via interface do usuário, uma pluralidade de elementos de dados, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site; armazenar os grupos de pelo menos um elemento de dados em um banco de dados; gerar uma pluralidade de páginas da web virtuais, em que cada página da web virtual é uma visualização de uma página da web real correspondente antes que a página da web real correspondente seja ativada, em que cada uma das páginas da web reais correspondentes não é projetada com funcionalidade para atualizar o banco de dados; exibir cada grupo de pelo menos um elemento de dados em um grupo separado da pluralidade de páginas da web virtuais; exibir uma ferramenta de edição para permitir que um usuário edite uma página da web virtual a partir da pluralidade de páginas da web virtuais; converter as edições na página da web virtual em atualizações para o banco de dados; armazenar as atualizações no banco de dados; e habilitar, durante uma exibição em tempo real de uma página da web real correspondente associada à página da web virtual, uma exibição da página da web real correspondente com as atualizações feitas na página da web virtual durante a visualização.
[000100] Em algumas modalidades, cada uma da pluralidade de páginas da web virtuais é exibida dentro de um quadro associado a uma interface de editor da interface do usuário.
[000101] Adicionalmente, em outras modalidades o método compreende ainda exibir um recurso selecionável pelo usuário que permite ao usuário navegar através da pluralidade de páginas da web virtuais para exibir individual e dinamicamente cada uma da pluralidade de páginas da web virtuais.
[000102] Em modalidades adicionais, o método ainda compreende exibir um recurso selecionável pelo usuário que permite ao usuário selecionar uma página da web virtual específica a partir da pluralidade de páginas da web virtuais com base em um identificador da página da web virtual específica.
[000103] Em modalidades adicionais, o identificador da página da web virtual específica é baseado em um elemento de dados associado à página da web virtual específica.
[000104] Além disso, em algumas modalidades, o método compreende ainda associar uma URL exclusiva a cada uma da pluralidade de páginas da web virtuais.
[000105] Em modalidades adicionais, cada uma da pluralidade de páginas da web virtuais é gerada com base em um mapa do site que faz referência à URL exclusiva de cada uma da pluralidade de páginas da web virtuais.
[000106] Adicionalmente, em algumas modalidades, a ferramenta de edição é configurada para receber edições nos grupos armazenados de pelo menos um elemento de dados no banco de dados.
[000107] De acordo com as modalidades adicionais, a ferramenta de edição é configurada para receber edições em atributos da pluralidade de páginas da web virtuais.
[000108] Em modalidades adicionais, a ferramenta de edição é configurada para receber edições no código que é usado para gerar a pluralidade de páginas da web virtuais.
[000109] Ainda adicionalmente, em algumas modalidades a ferramenta de edição é configurada para exibir uma pluralidade de segmentos do código de esqueleto que representa o código real usado para gerar a pluralidade de páginas da web virtuais e receber edições no código de esqueleto que são traduzidas em edições no código real.
[000110] Em modalidades adicionais, os elementos de dados são recebidos via interface do usuário de uma fonte externa.
[000111] As modalidades divulgadas adicionais se referem a um sistema para permitir edições dinâmicas em páginas da web para atualizar um banco de dados back-end contendo conjuntos de dados que preenchem as páginas da web. O sistema pode incluir um banco de dados online configurado para armazenar uma pluralidade de elementos de dados para exibição em uma pluralidade de páginas da web, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site, cada página separada sem funcionalidade para atualizar o banco de dados online; e pelo menos um processador configurado para executar as operações. As operações podem fornecer instruções remotamente a um navegador para fornecer uma interface exibindo uma versão editável de uma primeira página da web gerada com base em um grupo de pelo menos um elemento de dados, permitindo que o usuário edite pelo menos um elemento de dados; converter edições recebidas por meio da interface na versão editável da primeira página da web em atualizações para o banco de dados online; armazene as atualizações no banco de dados online; e ative, durante uma exibição em tempo real da primeira página da web, uma exibição na primeira página da web com as atualizações feitas na versão editável da primeira página da web.
[000112] As modalidades adicionais incluem uma operação para gerar uma pluralidade de versões editáveis separadas de páginas da web, em que cada versão editável separada de uma página da web é exibida dentro de um quadro associado a uma interface de editor da interface.
[000113] Certas modalidades da presente divulgação se referem a um sistema para visualizar páginas da web dinâmicas por meio de uma interface de editor online. O sistema pode incluir um banco de dados online configurado para: armazenar uma pluralidade de elementos de dados para exibição em uma pluralidade de páginas da web; e armazenar as primeiras instruções para permitir a organização dos elementos de dados em uma pluralidade de grupos, cada um entre a pluralidade de grupos, incluindo pelo menos um elemento de dados e sendo associado a pelo menos uma página da web distinta, e cada um da pluralidade de grupos ainda sendo capazes de ser utilizado por pelo menos um código de front-end executável por um navegador e código de back-end executável por um servidor de back-end remoto do navegador para configurar uma pluralidade de páginas da web virtuais roláveis; e pelo menos um processador configurado para: fornecer remotamente segundas instruções ao navegador para exibir uma interface para permitir que um usuário associado ao navegador inclua elementos de dados no banco de dados, associe cada elemento de dados adicionado a pelo menos um entre a pluralidade de grupos e modifique o pelo menos um dos códigos de front-end e back-end ; executar terceiras instruções para gerar, com base nos elementos de dados adicionados do usuário, associação de elementos de dados adicionados com pelo menos um entre a pluralidade de grupos e modificação de pelo menos um dos códigos de front-end e back-end , a pluralidade de páginas da web virtuais roláveis; em que a pluralidade de páginas da web virtuais roláveis é configurada para ser gerada independentemente pelo menos um processador e editadas independentemente pelo usuário; e fornecer quartas instruções remotamente ao navegador para exibir uma interface de visualização configurada para exibir a pluralidade de páginas da web virtuais roláveis antes da geração das páginas da web finais correspondentes, a interface de visualização permitindo ao usuário rolar seletivamente a pluralidade de páginas da web virtuais com rolagem em cada um dos vários grupos de pelo menos um elemento de dados e visualize como os grupos de pelo menos um elemento de dados aparecerão em uma página da web final correspondente antes que a página da web final correspondente seja ativada.
[000114] De acordo com algumas modalidades, o sistema pode fornecer instruções adicionais remotamente ao navegador para exibir a interface do editor online para permitir ao usuário arrastar e soltar em um modelo de página da web uma seleção de pelo menos um elemento de construção para associar a pelo menos um elemento de construção de site a um dos elementos de dados para construir um front-end da página da web final correspondente.
[000115] Além disso, de acordo com algumas modalidades, o sistema inclui um modelo de página da web que é um modelo de página da web dinâmico configurado para incluir componentes de dados ajustáveis para apresentar a página da web final correspondente associada a cada um da pluralidade de grupos.
[000116] Ainda mais, de acordo com algumas modalidades, o sistema pode incluir uma interface de visualização configurada para ser exibida no navegador dentro de um quadro associado à interface do editor online.
[000117] Além disso, de acordo com algumas modalidades, o sistema pode incluir uma pluralidade de páginas da web virtuais roláveis, exibidas em um quadro associado à interface do editor online.
[000118] Além disso, de acordo com algumas modalidades, o sistema pode incluir uma interface de visualização que pode incluir um recurso selecionável pelo usuário, permitindo que o usuário role através da pluralidade de páginas da web virtuais roláveis.
[000119] Além disso, de acordo com algumas modalidades, o sistema inclui uma interface de visualização que pode incluir um recurso selecionável pelo usuário que permite ao usuário selecionar uma página da web virtual específica para exibição com base em um identificador da respectiva página da web virtual.
[000120] Além disso, de acordo com algumas modalidades, o sistema pode incluir identificadores para as respectivas páginas da web virtuais com base em um elemento de dados armazenado no banco de dados.
[000121] Além disso, de acordo com algumas modalidades, o sistema pode associar um URL exclusivo a cada um da pluralidade de grupos
[000122] Além disso, de acordo com algumas modalidades, o sistema inclui uma pluralidade de páginas da web virtuais roláveis que podem ser geradas com base em um mapa do site referenciando o URL exclusivo de cada página da web.
[000123] Além disso, de acordo com algumas modalidades, o sistema inclui o banco de dados que pode incluir um banco de dados online centralizado configurado para armazenar dados associados a uma pluralidade de sites gerados por usuários de uma pluralidade de usuários remotos.
[000124] Além disso, de acordo com algumas modalidades, a pelo menos uma página da web distinta é indexável por um mecanismo de pesquisa.
[000125] Além disso, de acordo com algumas modalidades, o sistema pode incluir pelo menos um código de front-end e código de back-end configurado para executar uma função de um roteador baseado em software.
[000126] Além disso, de acordo com alguma modalidade, o roteador baseado em software pode ser capaz de configurar pelo menos uma página da web distinta de várias maneiras diferentes, com base em uma pluralidade de segmentos de URL possíveis fornecidos pelo usuário.
[000127] Além disso, de acordo com algumas modalidades, o sistema pode incluir pelo menos um código de front-end e código de back-end associados a pelo menos uma página da web distinta.
[000128] Além disso, o sistema pode incluir pelo menos um código de front-end e código de back-end associado a um roteador específico baseado em software.
[000129] Além disso, a pluralidade de grupos pode ser associada a pelo menos um de um site que compreende uma pluralidade de páginas da web distintas e um grupo associado de sites.
[000130] Além disso, de acordo com algumas modalidades, o sistema pode incluir um subconjunto da pluralidade de elementos de dados organizados por uma função repetidora, a função repetidora gerando uma ou mais instâncias exibidas do subconjunto da pluralidade de elementos de dados.
[000131] Além disso, de acordo com algumas modalidades, as uma ou mais instâncias podem fazer parte da interface de visualização configurada para exibir a pluralidade de páginas da web virtuais roláveis.
[000132] Certas modalidades da presente divulgação se referem a um método implementado por computador para visualizar páginas da web dinâmicas por meio de uma interface de editor online. O método pode incluir armazenar uma pluralidade de elementos de dados para exibição em uma pluralidade de páginas da web; e armazenar as primeiras instruções para permitir a organização dos elementos de dados em uma pluralidade de grupos, cada um entre a pluralidade de grupos, incluindo pelo menos um elemento de dados e sendo associado a pelo menos uma página da web distinta, e cada um da pluralidade de grupos ainda sendo capazes de ser utilizado por pelo menos um código de front- end executável por um navegador e código de back-end executável por um servidor de back-end remoto do navegador para configurar uma pluralidade de páginas da web virtuais roláveis; fornecer remotamente segundas instruções ao navegador para exibir uma interface para permitir que um usuário associado ao navegador inclua elementos de dados no banco de dados, associe cada elemento de dados adicionado a pelo menos um entre a pluralidade de grupos e modifique o pelo menos um dos códigos de front-end e back-end ; executar terceiras instruções para gerar, com base nos elementos de dados adicionados do usuário, associação de elementos de dados adicionados com pelo menos um entre a pluralidade de grupos e modificação de pelo menos um dos códigos de front-end e back-end , a pluralidade de páginas da web virtuais roláveis; em que a pluralidade de páginas da web virtuais roláveis é configurada para ser gerada independentemente pelo menos um processador e editadas independentemente pelo usuário; e fornecer quartas instruções remotamente ao navegador para exibir uma interface de visualização configurada para exibir a pluralidade de páginas da web virtuais roláveis antes da geração das páginas da web finais correspondentes, a interface de visualização permitindo ao usuário rolar seletivamente a pluralidade de páginas da web virtuais com rolagem em cada um dos vários grupos de pelo menos um elemento de dados e visualize como os grupos de pelo menos um elemento de dados aparecerão em uma página da web final correspondente antes que a página da web final correspondente seja ativada.
[000133] De acordo com algumas modalidades, o método inclui fornecer instruções adicionais remotamente ao navegador para exibir a interface do editor online para permitir ao usuário arrastar e soltar em um modelo de página da web uma seleção de pelo menos um elemento de construção para associar a pelo menos um elemento de construção de site a um dos elementos de dados para construir um front-end de uma página da web.
[000134] Além disso, de acordo com algumas modalidades, o modelo de página da web é um modelo de página da web dinâmico configurado para incluir componentes de dados ajustáveis para apresentar a página da web final correspondente associada a cada um da pluralidade de grupos.
[000135] Ainda mais, de acordo com algumas modalidades, a interface de visualização é configurada para ser exibida no navegador dentro de um quadro associado à interface do editor online.
[000136] Certas modalidades da presente divulgação se referem a um sistema para navegar entre páginas da web dinâmicas, o sistema compreendendo um banco de dados online armazenando uma pluralidade de elementos de dados para exibição em uma pluralidade de páginas da web dinâmicas. O banco de dados também pode armazenar primeiras instruções para permitir a organização dos elementos de dados em uma pluralidade de grupos, cada um entre a pluralidade de grupos, incluindo pelo menos um elemento de dados e sendo associado a pelo menos uma entre a pluralidade de páginas da web dinâmicas e cada uma das a pluralidade de grupos ainda sendo capazes de serem utilizados por pelo menos um código de front-end executável por um navegador e código de back-end executável por um servidor de back-end remoto do navegador para configurar a pluralidade de páginas da web dinâmicas; em que cada uma da pluralidade de páginas da web dinâmicas é configurada para ser gerada e editada independentemente. O sistema também pode incluir pelo menos um processador configurado para: fornecer remotamente segundas instruções ao navegador para exibir uma interface de navegação como parte de pelo menos uma entre a pluralidade de páginas da web dinâmicas, a interface de navegação configurada para permitir que um usuário navegue seletivamente cada uma da pluralidade de páginas da web dinâmicas geradas automaticamente com base em cada um da pluralidade de grupos de pelo menos um elemento de dados, em que a interface de navegação não é um elemento nativo da pluralidade de páginas da web dinâmicas.
[000137] Além disso, de acordo com algumas modalidades, o sistema pode executar pelo menos uma pesquisa na pluralidade de páginas da web dinâmicas, navegando selecionando uma página da web dinâmica através de um recurso exibido, rolando sequencialmente pela pluralidade de páginas da web e indo diretamente para a próxima, página anterior, primeira, última, marcada ou outra página específica.
[000138] Além disso, de acordo com algumas modalidades, as páginas da web dinâmicas têm uma ordem determinada com base em um mapa do site.
[000139] Além disso, de acordo com algumas modalidades, o sistema pode incluir uma interface de navegação configurada para ser exibida no navegador dentro de um quadro dissociado de outros aspectos da pluralidade de páginas da web dinâmicas.
[000140] Certas modalidades da presente divulgação se referem a um sistema para hospedagem de site implementado em um ambiente de servidor. O sistema pode incluir pelo menos um servidor de hospedagem configurado para co-hospedar uma pluralidade de sites gerados por uma pluralidade de usuários, o servidor de hospedagem incluindo ferramentas de edição comuns hospedadas acessíveis à pluralidade de usuários para permitir que cada uma da pluralidade de usuários altere seletivamente sites específicos gerados por cada um da pluralidade de usuários, o servidor de hospedagem sendo ainda configurado para impedir que pelo menos parte da pluralidade de usuários altere sites específicos co-hospedados gerados por outros da pluralidade de usuários; pelo menos um processador configurado para gerar uma interface, para exibição por pelo menos um subconjunto da pluralidade de usuários, para permitir que pelo menos um subconjunto da pluralidade de usuários carregue no código de plug-in do servidor de hospedagem associado aos plug-ins para os co-sites específicos hospedados gerados por pelo menos um subconjunto da pluralidade de usuários, o código do plug-in para pelo menos um plug-in específico, incluindo pelo menos um entre: código de funcionalidade do plug-in de front-end executável por um cliente; ou código de funcionalidade de plug-in de back-end executável em um servidor de plug-in; memória para armazenar o código do plug-in carregado pelo usuário associado a pelo menos um plug-in específico, de modo que o código do plug-in carregado pelo usuário armazenado seja hospedado centralmente em um domínio comum com os sites específicos co-hospedados gerados pela pluralidade de usuários, em que um uma única instância do pelo menos um plug-in específico é compartilhada por uma pluralidade de sites específicos co-hospedados; e em que, para cada um dos vários sites específicos hospedados em conjunto que compartilham pelo menos um plug-in carregado, o pelo menos um processador é configurado ainda para habilitar com segurança, usando um mecanismo de isolamento, pelo menos um dos seguintes: execução do código de funcionalidade do plug-in do front-end no cliente; ou execução do código de funcionalidade do plug-in de back-end no servidor de plug-in; em que, com base no mecanismo de isolamento, qualquer código malicioso contido em pelo menos um plug-in carregado é impedido de afetar outros da pluralidade de sites específicos co-hospedados no servidor de hospedagem.
[000141] De acordo com algumas modalidades, o servidor de plug-in e o servidor de hospedagem incluídos no sistema são o mesmo servidor.
[000142] Além disso, de acordo com algumas modalidades, o sistema pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade de plug-in de back-end no servidor de plug-in, que é separado do servidor de hospedagem.
[000143] Além disso, de acordo com algumas modalidades, o sistema pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end em uma máquina virtual.
[000144] Além disso, de acordo com algumas modalidades, o sistema pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end em um contêiner de docker.
[000145] Além disso, de acordo com algumas modalidades, o sistema pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end através de um processo isolado no servidor do plug-in.
[000146] Além disso, de acordo com algumas modalidades, o sistema em que o sistema pode incluir um mecanismo de isolamento inclui na execução do código de funcionalidade do plug-in de front-end em uma sub-região segura de um site específico co-hospedado.
[000147] Além disso, de acordo com algumas modalidades, o sistema pode estabelecer um canal de comunicação seguro para controlar as comunicações entre a sub-região do site específico co-hospedado e outras sub-regiões do site específico co-hospedado.
[000148] Além disso, de acordo com algumas modalidades, o sistema pode incluir um canal de comunicação seguro configurado para restringir o acesso de pelo menos um plug-in carregado a outros aspectos do site específico co-hospedado.
[000149] Além disso, de acordo com algumas modalidades, o sistema pode incluir um canal de comunicação seguro que é criado usando uma interface de programação de aplicativos configurável para limitar a interação entre pelo menos um plug-in carregado e o site específico co- hospedado.
[000150] Além disso, de acordo com algumas modalidades, o sistema pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de front-end através de um iframe em um navegador do cliente, em que o iframe está configurado para funcionar como uma sandbox segura para a execução do código de funcionalidade do plug-in de front-end.
[000151] Além disso, de acordo com algumas modalidades, o sistema pode associar o código de funcionalidade do plug-in de front-end executável pelo cliente com sub-regiões de páginas da web separadas de um site específico co-hospedado.
[000152] Além disso, de acordo com algumas modalidades, o sistema pode associar dois ou mais plug-ins confiáveis a um site específico co- hospedado.
[000153] Além disso, de acordo com algumas modalidades, o sistema pode permitir que pelo menos um plug-in carregado se comunique e controle pelo menos um componente da página da web específica hospedada em conjunto na qual seu código de funcionalidade de plug- in de front-end é executado.
[000154] Além disso, de acordo com algumas modalidades, o sistema pode co-hospedar a pluralidade de sites específicos co-hospedados em uma plataforma compartilhada acessível à pluralidade de usuários.
[000155] Além disso, de acordo com algumas modalidades, o sistema pode incluir pelo menos um plug-in carregado que é isolado de cookies associados a uma página da web de um site específico co-hospedado.
[000156] Certas modalidades da presente divulgação se referem a um método implementado por computador para hospedar sites implementados em um ambiente de servidor. O método pode incluir co- hospedar, em um servidor de hospedagem, uma pluralidade de sites gerados por uma pluralidade de usuários; deixar disponível para a pluralidade de usuários as ferramentas de edição comuns para permitir que cada uma da pluralidade de usuários altere seletivamente sites específicos gerados por cada um da pluralidade de usuários; impedir que pelo menos parte da pluralidade de usuários altere sites específicos co-hospedados gerados por outros da pluralidade de usuários; gerar uma interface, para exibição por pelo menos um subconjunto da pluralidade de usuários, para permitir que pelo menos um subconjunto da pluralidade de usuários carregue no código de plug-in do servidor de hospedagem associado aos plug-ins para os co-sites específicos hospedados gerados por pelo menos um subconjunto da pluralidade de usuários, o código do plug-in para pelo menos um plug-in específico, incluindo pelo menos um entre: código de funcionalidade do plug-in de front-end executável por um cliente; ou código de funcionalidade de plug-in de back-end executável em um servidor de plug-in; armazenar o código do plug-in carregado pelo usuário associado a pelo menos um plug-in específico, de modo que o código do plug-in carregado pelo usuário armazenado seja hospedado centralmente em um domínio comum com os sites específicos co-hospedados gerados pela pluralidade de usuários, em que um uma única instância do pelo menos um plug-in específico é compartilhada por uma pluralidade de sites específicos co- hospedados; e para cada um dos vários sites específicos hospedados em conjunto que compartilham pelo menos um plug-in carregado, habilitar com segurança, usando um mecanismo de isolamento, pelo menos um dos seguintes: execução do código de funcionalidade do plug-in do front- end no cliente; ou execução do código de funcionalidade do plug-in de back-end no servidor de plug-in; em que, com base no mecanismo de isolamento, qualquer código malicioso contido em pelo menos um plug- in carregado é impedido de afetar outros da pluralidade de sites específicos co-hospedados no servidor de hospedagem.
[000157] De acordo com algumas modalidades, o método pode incluir pelo menos um plug-in carregado que é isolado de cookies associados a uma página da web de um site específico co-hospedado.
[000158] Adicionalmente, de acordo com algumas modalidades, o servidor de plug-in e o servidor de hospedagem são o mesmo servidor.
[000159] Ainda adicionalmente, de acordo com algumas modalidades, o método pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade de plug-in de back-end no servidor de plug-in, que é separado do servidor de hospedagem.
[000160] Adicionalmente, de acordo com algumas modalidades, o método pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end em uma máquina virtual.
[000161] Além disso, de acordo com algumas modalidades, o método pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end em um contêiner de docker.
[000162] Além do mais, de acordo com algumas modalidades, o método pode incluir um mecanismo de isolamento que permite a execução do código de funcionalidade do plug-in de back-end através de um processo isolado no servidor do plug-in.
[000163] Ainda adicionalmente, de acordo com algumas modalidades, o método pode incluir código de funcionalidade de plug-in de front-end executável pelo cliente e que é configurado para gerar uma interface de usuário em um iframe de um navegador.
[000164] Deve-se entender que a descrição geral anterior e a descrição detalhada a seguir são exemplificativas e explicativas apenas e não são restritivas da invenção, como reivindicada.
BREVE DESCRIÇÃO DOS DESENHOS
[000165] Os desenhos anexos, que são incorporados e constituem uma parte deste relatório descritivo, ilustram várias modalidades e, juntamente com a descrição, servem para explicar os princípios divulgados. Nos desenhos:
[000166] A FIG. 1 representa um sistema de construção de site online exemplar interagindo com outros sistemas e componentes, de acordo com algumas modalidades da presente divulgação.
[000167] A FIG. 2 representa um sistema de construção de site online exemplar, de acordo com algumas modalidades da presente divulgação.
[000168] A FIG. 3 ilustra um caminho para a execução do código de back-end associado a um gatilho, de acordo com algumas modalidades da presente divulgação.
[000169] A FIG. 4 representa uma interface de editor online exemplar para atualizar a funcionalidade de back-end , de acordo com algumas modalidades da presente divulgação.
[000170] A FIG. 5 é um diagrama de blocos que mostra uma página da web dinâmica exemplar no modo de desenvolvimento, de acordo com algumas modalidades da presente divulgação.
[000171] A FIG. 6 é um fluxograma que ilustra um método de desenvolvimento de funcionalidade de back-end , de acordo com algumas modalidades da presente divulgação.
[000172] A FIG. 7 é um fluxograma que ilustra um método para acionar a execução de código de back-end , de acordo com algumas modalidades da presente divulgação.
[000173] A FIG. 8 representa um diagrama de blocos de um sistema de instância de execução de servidor da web sob demanda, de acordo com algumas modalidades da presente divulgação.
[000174] A FIG. 9 representa um diagrama esquemático da interação entre vários componentes do sistema de instância de execução de servidor da web sob demanda, de acordo com algumas modalidades da presente divulgação.
[000175] A FIG. 10 é um fluxograma que ilustra um método para responder a uma solicitação da web enviada para um site, de acordo com algumas modalidades da presente divulgação.
[000176] A FIG. 11 é uma ilustração de um sistema de instância de execução de servidor da web sob demanda para determinar se um site está hospedado e gerar e instanciar instâncias de execução do servidor da web, de acordo com algumas modalidades da presente divulgação.
[000177] A FIG. 12 representa a instanciação dos elementos da instância de execução do servidor da web com um site, de acordo com algumas modalidades da presente divulgação.
[000178] A FIG. 13 representa o monitoramento de carregamento de sites hospedados e o gerenciamento de instâncias em uso, de acordo com algumas modalidades da presente divulgação.
[000179] A FIG. 14 representa o número de monitoramento de instâncias de execução de servidor da web disponíveis para hospedagem, de acordo com algumas modalidades da presente divulgação.
[000180] A FIG. 15 representa um sistema de teste em tempo real de site exemplar, de acordo com algumas modalidades da presente divulgação.
[000181] A FIG. 16a representa um diagrama esquemático do acesso do ambiente de implantação aos elementos de dados, de acordo com algumas modalidades da presente divulgação.
[000182] A FIG. 16b representa um diagrama esquemático do acesso do Ambiente de teste aos elementos de dados, de acordo com algumas modalidades da presente divulgação.
[000183] A FIG. 17 é uma ilustração do acesso ao site para dados em tempo real e de teste em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000184] A FIG. 18 representa a geração de dados de teste usados em um Ambiente de teste para sites de teste, de acordo com algumas modalidades da presente divulgação.
[000185] A FIG. 19 é um fluxograma que ilustra um método para acessar um site em um ambiente de implantação, de acordo com algumas modalidades da presente divulgação.
[000186] A FIG. 20 é um fluxograma que ilustra um método para acessar um site em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000187] A FIG. 21 é um fluxograma que ilustra um método para lidar com solicitações de dados em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000188] A FIG. 22 é um fluxograma que ilustra um método para lidar com solicitações de leitura em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000189] A FIG. 23a é um fluxograma de um método para atualizar elementos de dados em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000190] A FIG. 23b é um fluxograma de um método para atualizar elementos de dados em um ambiente de implantação, de acordo com algumas modalidades da presente divulgação.
[000191] A FIG. 23c é um fluxograma de um método para adicionar elementos de dados em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000192] A FIG. 24 é um fluxograma que ilustra um método para excluir elementos de dados de um Ambiente de teste, de acordo com algumas modalidades da presente divulgação
[000193] A FIG. 25 ilustra um processo de sobreposição para gerar os resultados da consulta de dados de teste, de acordo com algumas modalidades da presente divulgação.
[000194] A FIG. 26 é um fluxograma que mostra as etapas envolvidas na edição de um banco de dados durante a visualização do site, de acordo com algumas modalidades da presente divulgação.
[000195] A FIG. 27 é um sistema para o desenvolvimento e visualização de páginas da web, de acordo com algumas modalidades da presente divulgação.
[000196] A FIG. 28 é um diagrama de blocos de uma página da web virtual, de acordo com algumas modalidades da presente divulgação.
[000197] A FIG. 29 é uma exibição de linha do tempo de atualização dinâmica de páginas da web, de acordo com algumas modalidades da presente divulgação.
[000198] A FIG. 30 representa um diagrama de blocos de um sistema de visualização dinâmica, de acordo com algumas modalidades da presente divulgação.
[000199] A FIG. 31 ilustra uma visualização de uma página da web virtual sendo editada, de acordo com algumas modalidades da presente divulgação.
[000200] A FIG. 32 é um diagrama esquemático que descreve uma relação entre grupos de dados e sites, de acordo com algumas modalidades da presente divulgação.
[000201] A FIG. 33 é um diagrama esquemático que descreve os componentes envolvidos na geração de páginas da web virtuais, de acordo com algumas modalidades da divulgação atual.
[000202] A FIG. 34 é um fluxograma que mostra as etapas envolvidas em uma visualização de páginas da web virtuais, de acordo com algumas modalidades da presente divulgação.
[000203] A FIG. 35 é um diagrama esquemático de usuários que interagem com o sistema de hospedagem de sites, de acordo com algumas modalidades da presente divulgação.
[000204] A FIG. 36 representa um acesso controlado a sites co- hospedados, de acordo com algumas modalidades da presente divulgação.
[000205] A FIG. 37 representa grupos de sites co-hospedados compartilhando código de plug-in em rotas comuns, de acordo com algumas modalidades da presente divulgação.
[000206] A FIG. 38 representa ambientes de execução isolados do código de plug-in de back-end , de acordo com algumas modalidades da presente divulgação.
[000207] A FIG. 39 representa um acesso controlado e a execução do código de plug-in de front-end, de acordo com algumas modalidades da presente divulgação.
[000208] A FIG. 40 representa a execução isolada do lado do cliente do código do plug-in, de acordo com algumas modalidades da presente divulgação.
[000209] A FIG. 41 é um fluxograma que mostra as etapas envolvidas no acesso e execução do código do site e do plug-in, de acordo com algumas modalidades da presente divulgação.
[000210] A FIG. 42 é um exemplo de interface de usuário para editar uma página da web e criar uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação.
[000211] A FIG. 43 é um exemplo de interface de usuário para editar uma página da web e configurar permissões para uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação.
[000212] A FIG. 44 é um exemplo de interface de usuário para editar uma página da web e entradas em uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação.
[000213] A FIG. 45 é um exemplo de interface de usuário para editar uma página da web e exibir o resultado de uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação.
[000214] A FIG. 46 é um exemplo de interface de usuário para editar uma página da web e criar uma função repetidora, de acordo com algumas modalidades da presente divulgação.
[000215] A FIG. 47 é um exemplo de interface de usuário para editar uma página da web e mostrar o resultado de uma função repetidora, de acordo com algumas modalidades da presente divulgação.
DESCRIÇÃO DETALHADA
[000216] Na seguinte descrição detalhada, inúmeros detalhes específicos são apresentados a fim de prover um entendimento completo das modalidades do exemplo divulgadas. No entanto, será entendido pelos versados na técnica que os princípios das modalidades exemplificativos podem ser praticados sem todos os detalhes específicos. Os métodos, procedimentos e componentes conhecidos não foram descritos em detalhes para não ocultar os princípios das modalidades exemplificativas. A menos que declarado explicitamente, os métodos e processos de exemplo descritos neste documento não são restritos a uma ordem ou sequência específica, nem a uma configuração de sistema específica. Além disso, algumas das modalidades descritas ou elementos das mesmas podem ocorrer ou ser executadas simultaneamente, no mesmo ponto no tempo ou simultaneamente. Referência será feita agora em detalhes às modalidades divulgadas, cujos exemplos são ilustrados nos desenhos anexos. A menos que declarado explicitamente, o envio e o recebimento, conforme usado aqui, são entendidos como tendo amplos significados, incluindo o envio ou o recebimento em resposta a uma solicitação específica ou sem uma solicitação específica. Esses termos abrangem, portanto, os formulários ativos e os passivos de envio e recebimento.
[000217] Os sistemas e métodos consistentes com a presente divulgação são direcionados aos sistemas de criação de sites, incluindo funcionalidades personalizadas de front-end e back-end . Em algumas modalidades, os sistemas de criação de sites podem incluir opções para configuração do usuário dos recursos de desenvolvimento da funcionalidade de back-end .
[000218] FIG. 1 representa um sistema exemplar interagindo com outros componentes e usuários através de uma rede, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 1, o sistema de construção de sites (WBS) 100 inclui o editor WBS 110, que pode ser uma ferramenta para criar e editar sites. A WBS 100 também pode incluir um sistema de gerenciamento de conteúdo da WBS (CMS) 120, que pode ser um repositório de widgets e outras ferramentas usadas na construção de sites, bancos de dados ou estruturas semelhantes de armazenamento de dados, código ou dados que representam sites construídos ou em desenvolvimento, e os dados criados, atualizados e visualizados usando os sites criados ou em desenvolvimento (como, por exemplo, o inventário de uma loja virtual subjacente a um site de comércio eletrônico).
[000219] O editor WBS 110 pode ser um editor para construir e editar sites. O editor pode permitir que sites e páginas do site sejam construídos começando com uma tela em branco ou com base em sites pré-desenvolvidos, seções ou páginas do site (conhecidas em conjunto como modelos) que podem ser armazenadas no WBS CMS 120. O editor WBS 110 pode definir o layout visual e outros atributos das páginas de um site que está sendo construído. Os modelos podem definir as páginas da web pertencentes ao site que está sendo construído e seu conteúdo inicial. O editor WBS 110 também pode incluir uma seção de interface do usuário para determinar o arranjo do site, definindo a navegação entre várias páginas. O editor WBS 110 define o layout de uma página, permitindo que os usuários coloquem componentes nas páginas da web da maneira que preferem que as páginas da web reais apareçam.
[000220] Em algumas modalidades, como discutido mais a seguir, o WBS 100 pode hospedar sites e páginas individuais através de máquinas virtuais, instâncias de contêiner ou código sem servidor. Essas técnicas podem melhorar os tempos de carregamento e reduzir a latência para o usuário. Por exemplo, em uma situação em que um site integra código de back-end ou front-end que deve executar ou incluir componentes específicos do site, esse código e os componentes podem ser carregados em instâncias de execução de servidor sem estado na primeira vez em que essas instâncias são associadas a uma solicitação feita por um navegador (por exemplo, Navegador da web 131) para um determinado site. Essas instâncias de servidor sem estado podem então ser reutilizadas para solicitações de navegador adicionais envolvendo o mesmo site. Além disso, oferece o benefício de permitir que o WBS 100 use seus recursos de servidor com base nas solicitações reais sendo atendidas, o que é muito mais eficiente do que usar instâncias de execução de serviço da web dedicadas (como servidores, VMs ou contêineres) e infraestrutura.
[000221] As Ferramentas de construção 121 podem incluir widgets, que são componentes dispostos nas páginas que estão sendo editadas pelo Editor de WBS. Em algumas modalidades, os widgets podem incluir aplicativos desenvolvidos pelo usuário que cria a página da web, outros usuários, o próprio fornecedor da WBS ou fornecedores de aplicativos de terceiros. Os aplicativos podem vir de repositórios como o WIX APP MARKET. Exemplos de widgets incluem widgets simples (como campos de texto, forma etc.) ou widgets complexos (como calendários, geradores de formulários, edição de imagens, edição de vídeo, contagem de visitantes, incorporação de mídias sociais etc.)
[000222] O WBS CMS 120 pode armazenar os dois componentes para a construção de sites e sites que foram construídos. Em algumas modalidades, os componentes e sites são mantidos em sistemas CMS separados. Como mostrado na FIG. 1, as Ferramentas de construção 121 armazenadas no WBS CMS 120, que incluem widgets e outras ferramentas que auxiliam na construção fácil de um site.
[000223] As Ferramentas de construção 121 são os blocos de construção de um site que facilitam o processo de construção e inclusão de conteúdo em um site. As Ferramentas de construção 121 podem incluir ferramentas de componente ou widgets, como discutido anteriormente, como guias, barra de pesquisa, botões, galeria, slide decks etc., bem como ferramentas operacionais, como ferramentas de alinhamento. As Ferramentas de construção 121 podem incluir widgets simples (por exemplo, botões, campos de texto etc.) e widgets complexos (por exemplo, galeria, widgets de calendário etc.) e estão configurados para executar funções avançadas. As Ferramentas de construção 121 podem ser representadas como uma abstração do código que representa os widgets e outras ferramentas. As Ferramentas de construção 121 podem incluir ferramentas padrão públicas oferecidas a todos os usuários do sistema e ferramentas privadas oferecidas exclusivamente a um site ou usuário específico. As ferramentas privadas podem incluir ferramentas públicas que foram personalizadas para o usuário ou o site ou novas ferramentas. As ferramentas privadas podem ser criadas pelo usuário do sistema que cria o site ou por terceiros. As Ferramentas de construção 121 podem ser compartilhadas entre vários sites criados por diferentes grupos de usuários e pertencentes a diferentes grupos de usuários. As Ferramentas de construção 121 também podem ser personalizadas editando o código das Ferramentas de construção existentes 121 (por exemplo, atualizando uma folha de estilos de um botão para criar uma nova folha de estilos para um novo botão). As ferramentas de construção personalizadas podem ser armazenadas junto com as ferramentas de construção originais 121 no banco de dados da área do sistema 122.
[000224] O editor WBS 110 fornece acesso remoto às Ferramentas de construção 121 armazenadas no Banco de dados da Área do Sistema 122 do WBS CMS 120. Uma instância de um widget selecionado das Ferramentas de construção 121 pode ser criada quando um usuário coloca um widget nas páginas que estão sendo editadas pelo Editor WBS 110. Uma instância de um widget selecionado nas Ferramentas de construção 121 pode ser criada por uma referência ao widget na página. Uma instância de um widget selecionado nas Ferramentas de construção 121 também pode ser criada copiando o código que representa o widget selecionado para a página da web do site que está sendo construído.
[000225] O Editor de WBS 110 é um software que normalmente é hospedado em um servidor, enquanto alguns ou todos os seus elementos podem ser carregados para execução no dispositivo 130 de visualização do site do usuário (ou em seu Navegador da web 131). Em algumas modalidades, o Editor WBS 110 pode compartilhar o banco de dados de área do sistema 122 com as Ferramentas de construção 121 ou compartilhar um servidor comum. No entanto, em outras modalidades, o Editor de WBS 110 e o Banco de dados de área do sistema 122 são hospedados separadamente.
[000226] O Banco de dados de área do sistema 124 armazena os sites criados usando o Editor de WBS 110. Como mostrado, o Site 123 é um site que está sendo construído usando o Editor de WBS 110 e armazenado no Banco de dados de área do site 124. O Site 123 armazenado no Banco de dados de área do site 124 pode incluir texto representando código e dados que podem ser acessados, atualizados e visualizados usando o Dispositivo de desenvolvimento de site 140. O Site 123 pode incluir uma ou mais páginas da web, incluindo a página da web indexável 125. Em algumas modalidades, por exemplo, uma ou mais Páginas da web indexáveis 125 compartilham o mesmo domínio comum (por exemplo, http://www.my-site.com), subdomínio (por exemplo, http://my-site.wix.com/) ou prefixo de URL (por exemplo, http://www.wix.com/wixsites/my-site/). A página da web indexável 125 pode incluir o front-end 126 e o back-end 127. A página da web indexável 125 pode incluir um arquivo ou código especial, incluindo ou referenciando o front-end 126 e o back-end 127 ou pode ser apenas um nome para a coleção de front-end 126 e de back-end 127, conforme indicado por uma linha tracejada. O front-end 126 pode ser composto de widgets e outros elementos da interface do usuário, que podem ser instâncias das Ferramentas de construção 121, incluindo informações específicas da instância (como posição, tamanho e valores de atributo); Essas informações específicas da instância também podem incluir informações de contenção (ou seja, quais componentes estão contidos em quais contêineres). O front-end 126 também pode incluir elementos de código, como segmentos de código a serem executados no front-end 126 (possivelmente afetando os widgets durante o tempo de execução). O front-end 126 pode ainda ser composto de outros elementos, como metadados da página, títulos etc.
[000227] O front-end 126 inclui instâncias das Ferramentas de construção 121 colocadas na web indexável 125 do Site 123, criada usando o Editor WBS 110, como as que são sempre visíveis a um usuário, são visíveis por padrão ou visíveis pelo menos uma parte do tempo. O back-end 127 representa a funcionalidade que pode ser ativada quando um usuário interage com o front-end 126 ou através de eventos de não interação, como uma comunicação de entrada para o Site 123, um gatilho baseado em tempo ou uma alteração no banco de dados conectado ao Site 123. O back-end 127 pode ser visto apenas algumas vezes ou nunca pode ser visto pelo usuário do dispositivo de desenvolvimento de sites 140 e do dispositivo da equipe de fornecedores da WBS 150. O front-end 126 e o back-end 127 podem ser armazenados no Banco de dados da área do site 124 como código ou dados estruturados (por exemplo, XML, JSON, JSON-LD etc.). O código pode ser armazenado em formato textual ou código de objeto compilado. O código que representa o front-end 126 e o back-end 127 pode estar na mesma linguagem de programação ou no formato de dados estruturados. Em algumas modalidades, o código que representa o back-end 127 e o código que faz parte do FE 126 é convertido em uma linguagem de programação diferente antes de salvar no Banco de dados da área do site 124.
[000228] Em algumas modalidades, o código e os dados do Site 123 podem compartilhar um banco de dados ou podem ter bancos de dados separados. Em algumas modalidades, o código que representa o front- end 126 e o back-end 127 pode ser armazenado no Banco de dados da área do site 124 como texto simples em uma tabela de banco de dados. Em outras modalidades, o código pode ser armazenado como objetos de arquivo e pode armazenar um local do arquivo no Banco de dados de área de site 124. Em algumas modalidades, o código é armazenado em um único local em uma coluna do Banco de dados da área do site 124 ou em um arquivo. Em algumas modalidades, o código pode ser dividido entre vários arquivos.
[000229] Em algumas modalidades, a Página da web indexável 125 pode ser uma página da web dinâmica e o front-end 126 pode ser um modelo e não a página da web real. Conforme discutido mais a seguir,
uma página da web dinâmica pode ser uma página da web configurada para alterar sua aparência ou conteúdo com base na funcionalidade de back-end personalizada. Exemplos de funcionalidades de back-end personalizadas, conforme discutido mais a seguir, incluem atualizar os dados mostrados na página da web, redimensionar ou alterar imagens na página da web, acionar a apresentação do conteúdo de vídeo na página da web e muito mais. Em algumas modalidades, o front-end 126 de páginas da web dinâmicas pode ser um modelo vinculado diretamente aos dados de uma tabela de banco de dados para atualizar o conteúdo e a aparência de várias páginas da web dinâmicas.
[000230] Em algumas modalidades, a WBS 100 pode incluir mais ou menos dos componentes mostrados na FIG. 1. Por exemplo, os bancos de dados 122 e 124 podem ser um único banco de dados ou bancos de dados separados. Os bancos de dados podem ser um conjunto distribuído de bancos de dados. Tanto o banco de dados 122 quanto o 124 podem ser bancos de dados relacionais, bancos de dados orientados a objetos, repositórios de arquivos de idiomas de dados (para linguagens como XML ou JSON) ou bancos de dados No SQL. Além disso, os bancos de dados 122 e 124 podem ser mantidos em uma rede local (por exemplo, rede de área local, com acesso à Internet), em uma rede baseada em nuvem (por exemplo, arquitetura de nuvem pública ou privada) ou um híbrido de uma rede local e baseada em nuvem.
[000231] Como mostrado na FIG. 1, o Site 123 armazenado em um banco de dados de área de site 124 no WBS CMS 120 pode ser acessado pelo dispositivo de visualização de site 130 (por exemplo, computador desktop, tablet, laptop, smartphone etc.) via navegador da web 131. Um usuário (não ilustrado) do Dispositivo de visualização de site 130 pode solicitar acesso ao Site 123 via Rede 160 (por exemplo, a Internet, incluindo redes intermediárias entre o Dispositivo de visualização de site 130 e WBS 100). O Navegador da web 131 (por exemplo, APPLE SAFARI, GOOGLE CHROME, MOZILLA FIREFOX, MICROSOFT EXPLORER etc.) do Dispositivo de visualização da web 130 pode ser usado para visualizar o Site 123 e os dados criados e editados usando o Site 123. O Dispositivo de desenvolvimento de site 140 pode ser usado para construir o Site 123 usando o Editor WBS 110. O Navegador da web 141 no Dispositivo de desenvolvimento de site 140 pode ser usado para fazer uma solicitação para acessar o Editor WBS 110 para construir o Site 123. O Dispositivo da equipe de fornecedores de WBS 150 pode ser usado para fornecer suporte ao cliente para um usuário (não ilustrado) do Dispositivo de desenvolvimento de sites 140 ao criar e manter o Site 123. O dispositivo da equipe de fornecedores de WBS 150 também pode ser usado por fornecedores terceirizados para criar e personalizar as Ferramentas de construção 121. O dispositivo da equipe de fornecedores WBS 150 também pode ser usado para configurar a própria WBS 100, por exemplo, para gerenciar o designer do site e as contas de usuário, para gerenciar o site ou os modelos de página descritos anteriormente (criar novos ou editar os existentes) ou para gerenciar os vários elementos que compreendem o WBS 100.
[000232] Em algumas modalidades, o Dispositivo de visualização de site 130, o Dispositivo de desenvolvimento de site 140 e o Dispositivo de equipe de fornecedores WBS 150 podem ser dispositivos fisicamente diferentes. Em outras modalidades, elas podem ser vistas diferentes acessadas do mesmo dispositivo usando credenciais diferentes e/ou funções diferentes. Em algumas modalidades, o navegador da web 131, 141 e 151 pode ser o mesmo navegador ou navegadores diferentes no mesmo dispositivo ou em dispositivos diferentes ou guias diferentes no mesmo navegador.
[000233] O Dispositivo de visualização de site 130, o Dispositivo de desenvolvimento de site 140 e o Dispositivo de equipe de fornecedores WBS 150 podem acessar o Site 123 via Rede 160. Em algumas modalidades, o Dispositivo de visualização de site 130, Dispositivo de desenvolvimento de site 140 e Dispositivo de equipe de fornecedores WBS 150 podem ser um dispositivo móvel, laptop, computador de mesa, tablet etc.
[000234] Como mostrado na FIG. 1, o Motor de busca 170 (por exemplo, GOOGLE, YAHOO, BING etc.) pode acessar a Página da web indexável 125 do Site 123, armazenada no banco de dados da área de site 124 via rede 160, com ou sem a interação com WBS 100. O Motor de busca 170 pode indexar a página da web 125 indexável do Site 123 para facilitar a descoberta e, assim, aumentar o número de usuários usando o dispositivo de visualização de sites 130 para visualizar o Site
123. Em algumas modalidades, as Ferramentas de construção 121 permitem ainda que os usuários aperfeiçoem o Site 123 para indexação e pesquisa através do Motor de busca 170. Por exemplo, as Ferramentas de construção 121 podem permitir que os usuários escolham o texto que aparece nos cabeçalhos de uma determinada página indexável da web 125, em determinados locais da página indexável da web 125 ou que está associado (por exemplo, como metadados) à página indexável da web 125.
[000235] FIG. 2 representa uma estrutura exemplar para WBS 100, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 2, o WBS 100 inclui o Banco de dados de área de site 124, incluindo componentes para construção e hospedagem de sites, como discutido anteriormente em conjunto com a FIG. 1.
[000236] Em algumas modalidades, a página da web indexável 125 pode ser uma página da web dinâmica ou virtual onde os componentes do front-end 126 podem ser preenchidos com dados do Grupo de dados
210. O Grupo de dados 210 pode estar associado a mais de uma página da web. O Grupo de dados 210 pode ser composto de Elementos de dados, incluindo o Elemento de dados 211. O Elemento de dados 211 pode ser associado a um ou mais componentes das Ferramentas de construção 121 usadas no front-end 126 da Página da web indexável
125. Como um exemplo, o Grupo de dados 210 pode ser um banco de dados de funcionários, com cada Elemento de dados 211 sendo um registro de funcionário contendo vários campos de dados (como nome, idade e informações de departamento). Esses vários campos podem ser usados para preencher vários componentes visíveis (campos de exibição) no Frontend 126 da Página indexável 125. Em algumas modalidades, o Grupo de dados 210 é armazenado no Banco de dados da área do site 124 como parte de uma tabela e o Elemento de dados 211 é uma linha nessa tabela. Uma página da web associada ao Grupo de dados 210 pode ser, por exemplo, uma página da web dinâmica.
[000237] Os elementos de dados 210 podem ser associados a DB 220 das associações de URL. Quando um usuário acessa a Página da web indexável 125 do Site 123 usando o Dispositivo de visualização da web 130 digitando um URL, o URL (ou um segmento do mesmo) pode corresponder aos URLs ou segmentos de URL armazenados no DB de associações de URL 220 para referência. Os grupos de dados podem ser associados a um URL ou segmento no DB de associações de URL 220. Um URL ou segmento de URL no DB de associações de URL 220 pode ajudar a determinar o grupo de dados a ser usado na geração da página virtual ou dinâmica usando a Página da web indexável 125 associada. Em algumas modalidades, a página da web indexável 125 é um modelo de uma página da web dinâmica ou virtual e a página da web real é gerada usando os dados no Grupo de dados 210 determinaUSando um URL no DB de associações de URL 220.
[000238] Os elementos de dados 210 podem ser determinaUSando um roteador baseado em software, que analisa um URL (ou segmentos de URL) digitado por um usuário ou fornecido de outra forma para acessar uma página da web 125 do Site 123 usando o dispositivo de visualização da web 130. A análise pelo roteador baseado em software do UEL pode resultar em uma chave para acessar o Elemento de dados 211 no Grupo de dados 210. Por exemplo, com o URL http://mysite.wix.com/users/20, um roteador baseado em software pode analisar o URL para determinar se o prefixo “usuários” está associado ao grupo de dados e o sufixo “20” é a chave resultando na procura de elemento de dados no grupo de dados associado a “usuários”, identificado por um valor chave “20”. Conforme descrito aqui, um roteador baseado em software pode ser configurado para analisar o sufixo de um URL ou um parâmetro dentro de um URL para determinar qual versão de uma página da web ou qual conteúdo em uma página da web deve ser exibido. Todas as opções anteriores podem ser aplicadas a URLs que não são digitados diretamente pelo usuário, mas que são recebidos pelo sistema (por exemplo, URLs gerados automaticamente por outra página ou código associado à página no site). O sistema também pode suportar vários roteadores de software definidos simultaneamente, com o sistema de criação de sites 100 realizando uma análise inicial de um URL recebido para determinar qual dos roteadores de software definidos usar. Essa análise pode fazer sua determinação com base no URL recebido, com base nas definições incluídas no DB associações de URL 220 ou com base em informações ou condições adicionais (como condições do ambiente do sistema).
[000239] As Primeiras instruções 240 são um conjunto de instruções acessadas pelo Navegador da web 141 e podem ser configuráveis através do Processador 260. As Primeiras instruções 240 ajudam o Navegador da web 141 a acessar remotamente uma biblioteca de ferramentas armazenadas, incluindo as Ferramentas de construção
121. A Interface do editor online 243 pode ser a representação visual do software do Editor WBS 110 no Navegador da web 141. A Interface do editor Online 243 é usada para criar e editar a implementação do layout do Frontend 126 da Página da web indexável 125 com a ajuda das Ferramentas de construção 121 e do código associado do front-end 126 e do back-end 127 da Página da web indexável. Semelhante às Primeiras instruções 240, instruções adicionais (por exemplo, Segundas instruções 250 e Terceiras instruções 260, entre outras instruções) também podem ser acessíveis ao Processador 260 e ao Navegador da web 141.
[000240] O Navegador da web 141 é usado para construir o Site 123, exibindo a Interface de navegação 242 para navegar entre diferentes partes do Site 123 e a Interface do editor online 213 para editar a parte acessada do Site 123. O código que representa o Editor WBS 110 na WBS 100 pode ser transmitido ao Navegador da web 141 para exibir a Interface de navegação 242 e a Interface do editor online 243.
[000241] FIG. 3 ilustra um caminho para a execução do código de back-end associado a um gatilho, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 3, um gatilho 310 pode resultar na execução do código associado ao back-end 127. Um Gatilho 310 pode ocorrer, por exemplo, quando um usuário de um Dispositivo de visualização da web 130 interagindo com a Página da web indexável 125 do Site 123 executa uma ação específica (por exemplo, um clique no mouse ou no touchpad, uma seleção, um cursor do mouse, uma solicitação de recarga, entrada de texto, upload de conteúdo multimídia etc.). Um Gatilho 310 também pode ocorrer durante um evento de não interação. Por exemplo, ações periódicas baseadas em tempo ou atualizações do banco de dados podem resultar em um gatilho e execução do código do back-end 127 e/ou do front-end 127. O gatilho 310 pode ser personalizável e pode assumir muitas formas diferentes. Além disso, as interações que precisam resultar na execução do código relacionado ao back-end 127 podem ser feitas através de um Evento programável 320. O Evento programável 320 passa o controle para o back-end 127 para execução através de um gancho que liga o front-end 126 e o back-end 127. O tipo de gancho usado para passar o controle entre o Evento programável 320 e o back-end 127 pode ser configurável e também pode ser dependente do tipo de interação ou outro tipo de evento que causou o Gatilho 310. O Evento programável 320 utiliza um ou mais Ganchos de dados 330, Ganchos da web 340 ou Gancho do roteador de ligação de dados 350, entre outros tipos possíveis de ganchos, para passar o controle ao back-end 127 para executar o código nele.
[000242] O Gancho de dados 330 pode ser usado para passar o controle do Evento programável 320 para o back-end 127 quando qualquer atualização de dados for inserida por um usuário do
Dispositivo de visualização da web 130 na Página da web indexável 125 do Site 123 mostrada no Navegador 131. Por exemplo, um envio de formulário pode ser considerado uma atualização de dados e o Gancho de dados 330 pode ser usado para passar o controle para o back-end 127, que em algumas modalidades cria ou atualiza uma entrada de banco de dados. Da mesma forma, como outro exemplo, postar texto em um blog ou interface de mídia social pode ser uma atualização de dados associada ao Gancho de dados 330. O gancho de dados 330 também pode ser usado para passar o controle para o back-end 127 programaticamente por meio de uma chamada de API. Por exemplo, um Gatilho de ação periódica 310 pode resultar em entradas em um banco de dados anteriores a um período a serem excluídas ou marcadas como inativas.
[000243] O Gancho da web 340 pode ser usado para passar o controle do Evento programável 320 para o back-end 127 quando uma função do módulo da web é importada e chamada no código que faz parte do front-end 126. Em algumas modalidades, por exemplo, o código que faz parte do front-end 126 é chamado de script de front-end e é executado quando um usuário do dispositivo de visualização na web está interagindo com os componentes do front-end 126 da Página da web indexável 125 do Site 123 exibidos no Navegador da web 123. Por exemplo, o Gancho da web 340 pode ser baseado em um usuário da Página da web indexável 125 utilizando um aplicativo, fazendo uma compra, assinando conteúdo na Página da web indexável 125 etc.
[000244] O Gancho do roteador de ligação de dados 350 pode ser usado para passar o controle do Evento programável 320 para o back- end 127 quando uma página da web dinâmica específica é solicitada por um usuário do Dispositivo de visualização da web 130 navegando para um determinado URL no Navegador da web 131. Pode-se navegar, por exemplo, inserindo um URL na barra de endereços do Navegador da web 131, clicando em um hiperlink em uma Página da web indexável 125 do Site 123 sendo visualizado no Navegador da web 131 ou executando uma operação que navega automaticamente para um URL predefinido ou gerado programaticamente. O Gancho do roteador de ligação de dados 350 ajuda a determinar a função de código do Grupo de dados 210 e do back-end 127 a ser executada para aplicar o Elemento de dados 211 do Grupo de dados determinado 210 ao modelo de uma página da web definida na função no código do back-end 127.
[000245] Em algumas modalidades, o Gancho do roteador de ligação de dados 350 pode funcionar junto com um roteador baseado em software. Por exemplo, se um usuário que acessa a Página indexável na web 125 digitar um URL para a Página indexável na web 125, um roteador baseado em software pode determinar quais dados serão exibidos na Página indexável na web 125 ou até que página específica a ser exibida. Um roteador pode estar associado a um prefixo que pode ser a primeira parte de um URL (ou com outro segmento do URL). Por exemplo, no URL http://www.wix.com/label, “label” pode ser o prefixo. Além disso, no URL http://www.wix.com/label/sub-label, “sub-label” pode ser um sufixo. Com base no segmento específico (por exemplo, prefixo, sufixo ou valor de um parâmetro) do URL fornecido, o roteador pode determinar que o conteúdo associado a um ou a uma página específica associada a ambos deve ser exibida. Por exemplo, o prefixo pode estar associado a um roteador, enquanto um sufixo pode ser passado para o roteador selecionado para determinar qual página acessar ou quais daUSar na página. Os roteadores também podem ser usados para gerar páginas virtuais ou dinâmicas completas com base nos dados selecionados e em um modelo. Dessa maneira, a Página indexável da web 125 do Site 123 pode ser dinâmica e personalizável com base na maneira como os usuários interagem com ela.
[000246] O Gancho do roteador de ligação de dados 350 também pode funcionar para passar o controle com base em eventos internos após a interação do usuário com o Site 123 no Dispositivo de visualização de site 130. Por exemplo, o Gancho do roteador de ligação de dados 350 pode ser registrado para executar uma função antes de determinar um roteamento para uma página como descrito anteriormente para verificar se um usuário tem permissão para acessar a página roteada. Os Ganchos de dados 330 podem, opcionalmente, ser executados antes ou depois dos Ganchos do roteador de ligação de dados 350 para o mesmo Gatilho 310. Por exemplo, um Gancho de dados 330 pode ser executado após uma consulta ser executada no banco de dados conectado ao Site 123 para filtrar as entradas que não estão mais ativas (por exemplo, um site de loja comercial pode filtrar produtos que não são mais vendidos a partir dos resultados da pesquisa de consulta no banco de dados). Assim, o sistema pode suportar a operação de várias combinações de ganchos e o encadeamento de ganchos entre si.
[000247] FIG. 4 é um diagrama de blocos que mostra uma Página da web 125 dinâmica exemplar em modo de desenvolvimento sendo acessada em um Dispositivo de desenvolvimento da web 140 através do Navegador da web 141, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 4, a Interface do editor online 243 é composta pela Interface unificada 410 e pela Interface de visualização 420.
[000248] A Interface unificada 410 pode ser usada para desenvolver ou construir a Página da web indexável 125 de um Site 123. A interface unificada 410 pode fornecer acesso às Ferramentas de construção 121, como discutido anteriormente. As Ferramentas de construção 121 podem incluir as Ferramentas de edição 411 para ajudar a editar a Página da web indexável 125 do Site 123. Em algumas modalidades, a Interface unificada 410 pode ser uma seção separada visível em um Navegador da web 141 durante o desenvolvimento. Em outras modalidades, a Interface unificada 410 pode ser um nome coletivo para as várias ferramentas e seções da interface do usuário. Em algumas modalidades, a Interface unificada 410 pode ser uma seção separada de uma página da web exibida ou uma janela flutuante ou um quadro. Em algumas modalidades, os componentes da Interface unificada 410 podem flutuar dentro de uma seção do Navegador da web 141.
[000249] O front-end 126 e o back-end 127 podem ser mostrados ou representados em um modo de edição juntos ou em janelas separadas. Em algumas modalidades, eles podem ser mostrados apenas um de cada vez. Além disso, o back-end 127 pode não ser específico para a exibição da Página da web 125 ou do Site 123 e parte ou a totalidade dele pode ser compartilhada entre sites e Programadores de sites diferentes. Quando um Programador salva o Site 123, o front-end pode ser salvo na forma de front-end 126.
[000250] A Interface de visualização 420 ajuda os usuários a visualizar o Site 123 que está sendo construído exibindo as Páginas da web 125 como no mundo real, ou seja, como seriam mostradas no Navegador da web 131 no Dispositivo de visualização da web 130 exibindo a Página da web virtual 421. Cada Página virtual 421 pode ser associada a um Identificador 422 exclusivo. Em algumas modalidades, o Identificador 422 exclusivo é um URL ou segmento de URL armazenado no Banco de dados da área do site 124, juntamente com outros URLs 210. Outras formas do Identificador 422 também são possíveis.
[000251] FIG. 5 é um diagrama de blocos que mostra uma página da web dinâmica ou virtual exemplar no modo de desenvolvimento, de acordo com algumas modalidades da presente divulgação. Por exemplo, como discutido anteriormente em conjunto com a FIG. 4, a página da web dinâmica ou virtual pode ser a Página da web virtual 421.
[000252] Como mostrado na FIG. 5, a Interface unificada 410 exibe as Ferramentas de construção 121 e a Página da web indexável 125. Nesta ilustração exemplar, o front-end 126 é mostrado usando um editor WYSIWYG para editar visualmente o conteúdo da página (por exemplo, texto, gráficos, widgets etc.). Em algumas modalidades, o front-end 126 pode ser editado diretamente como código. Em algumas modalidades, as Ferramentas de construção 121 são uma seção da interface do usuário na Interface unificada 410. Em outras modalidades, as Ferramentas de construção 121 podem ser acessadas por itens de menu na Interface do editor online 243. Em alguma modalidade, as ferramentas de construção de sites específicas selecionadas nas Ferramentas de construção 121 podem ser arrastadas e soltas na seção front-end 126 da Interface unificada 410. O front-end 126 da Página indexável da web 125 mostra o arranjo visual das Ferramentas de construção 121.
[000253] Em algumas modalidades, o back-end 127 é mostrado como uma janela flutuante dentro da Interface unificada 410. Em outras modalidades, o back-end 127 poderia ser uma seção separada semelhante ao front-end 126. O código que representa o back-end 127 pode estar oculto e não ser exibido, a menos que solicitado. Em algumas modalidades, todo o código do back-end 127 é mostrado o tempo todo e, em outras modalidades, apenas o código do back-end 127 associado a um único elemento das Ferramentas de construção 121 é mostrado.
[000254] O WBS 100 pode ser configurada para gerar automaticamente o código de esqueleto ao selecionar um elemento das Ferramentas de construção 121 e ao colocar o elemento no front-end
126. O código de esqueleto gerado mostrado no back-end 127 pode incluir, por exemplo, a Função concha 521 e o Código concha 522. A Função concha 521 e o Código concha 522 juntos representam um Evento programável 320 no código executado por um Gatilho 310. Em algumas modalidades, como ilustrado, a Função concha buttonClick 521 é um código que representa o evento de clicar em um botão. O acionamento de um clique no botão resulta em um evento programável buttonClick.
[000255] FIG. 6 é um fluxograma que ilustra um Método de desenvolvimento 600 de funcionalidade de back-end 127, de acordo com algumas modalidades da presente divulgação. Em algumas modalidades, o Método 600 pode ser realizado por componentes do WBS 100, como discutido anteriormente.
[000256] Como mostrado na FIG. 6, na Etapa 610, o WBS 100 recebe uma solicitação para acessar as Ferramentas de construção 121 no Banco de dados da área do site 124 de um usuário do Dispositivo de desenvolvimento da web 140 quando o usuário faz uma solicitação para o desenvolvimento do Site 123 por meio do Navegador da web 141. Como discutido anteriormente, os exemplos de Ferramentas de construção 121 incluem widgets, gráficos e outros conteúdos.
[000257] Na Etapa 620, o WBS 100 transmite as Primeiras instruções 240 em uma solicitação do Dispositivo de desenvolvimento de site 140 por meio do Navegador da web 141. A solicitação é recebida pelo WBS 100 via Rede 160. A solicitação é encaminhada para o site CMS 120. O site CMS 120 fornece acesso às Primeiras instruções 240, conforme solicitado pelo Processador 260 e são transmitidas ao Navegador do site 141. As Primeiras instruções 230 fornecem acesso às Ferramentas de construção 121 armazenadas no Banco de dados da área do site 124 e que permitem a criação de front-end 126 e back-end 127 da Página da web 125.
[000258] Na Etapa 630, o WBS 100, ao receber uma solicitação do Dispositivo de desenvolvimento de site 140 em uma Rede 160 para usar uma ferramenta nas Ferramentas de construção 121, gera automaticamente o código de esqueleto de uma ferramenta selecionada nas Ferramentas de construção 121 com base nas regras. Por exemplo, como discutido anteriormente em conjunto com a FIG. 5, o código do esqueleto pode ser associado a um evento, como um clique do mouse, flutuação, seleção de conteúdo etc.
[000259] Na etapa 640, o WBS 100 pode transmitir o código de esqueleto para o Dispositivo de desenvolvimento de site 140 a ser mostrado no Navegador da web 141.
[000260] Na Etapa 650, o WBS 100 pode fornecer acesso à funcionalidade de back-end personalizada 127 associada à Página da web 123 cujo front-end 126 está sendo editado ou criado. Como discutido anteriormente, a funcionalidade de back-end 127 pode assumir várias formas diferentes e pode ser configurada para ocorrer com base em vários eventos definidos.
[000261] Na Etapa 660, o WBS 100 pode receber especificações de um usuário do Dispositivo de desenvolvimento de site 140 por meio do Navegador da web 141 para configurar o Evento programável 320 para ativar a funcionalidade de back-end personalizada 127.
[000262] Na Etapa 670, o WBS 100 pode receber do usuário do Dispositivo de desenvolvimento de site 140 por meio do código editável pelo Navegador da web 141, implementando a funcionalidade de back- end 127. O usuário pode fazer edições no código, como alterar a funcionalidade do código, atualizar o código etc.
[000263] Na Etapa 680, o WBS 100 pode armazenar o código editável do usuário editado no Banco de dados da área do site 124, conforme recebido do Dispositivo de desenvolvimento do site 140 através da Rede
160. O código editável do usuário editado pode estar pronto para implantação para fornecer funcionalidade personalizada do back-end 127 para a Página da web indexável 125.
[000264] FIG. 7 é um fluxograma que ilustra um Método 700 para acionar a execução de código de back-end 127, de acordo com algumas modalidades da presente divulgação. O método 700 pode ser realizado em conjunto com o Método 600, como discutido anteriormente. Consistente com a discussão anterior, o Método 700 pode ser realizado no sistema do WBS 100.
[000265] Como mostrado na FIG. 7, um usuário de um Dispositivo de visualização do site 130 pode acionar 310 um Evento programável 320 associado ao back-end 127, fazendo a transição para uma Página da web indexável 125, como mostrado na Etapa 711, quando um usuário do Dispositivo de visualização do site 130 interage com a Página da web indexável 125, como mostrado na Etapa 712, ou quando o usuário entra em uma atualização em uma Página da web indexável 125 e resulta no Gatilho 310, como mostrado na Etapa 713. Por exemplo, a Etapa 711 pode envolver um usuário clicar em um hiperlink aninhado na Página indexável da web 125 associada a outra parte da página do mesmo Site 123. Da mesma forma, a Etapa 711 pode envolver um usuário clicar no hiperlink “next” ou “continue” na Página da web indexável 125 para visualizar uma página relacionada subsequente. A etapa 712 pode envolver, por exemplo, um usuário passar o cursor sobre um gráfico ou texto na Página indexável da web 125, fazer uma pausa por um período de tempo predefinido, clicar em uma imagem ou texto na Página indexável da web 125 etc. A etapa 713 pode envolver o usuário atualizar o conteúdo textual na Página indexável da web 125, carregando um arquivo de imagem ou vídeo na página indexável da web 125, preencher um formulário na Página indexável da web 125, um temporizador de período resultando em determinadas ações, uma atualização do banco de dados etc.
[000266] Na Etapa 720, o WBS 100, ao receber uma notificação de um Evento programável 320, acessa o Gatilho 310 em resposta que está associada ao Evento programável 320. Como discutido anteriormente, o Evento programável 320 pode ser baseado em vários tipos de ganchos, como um Gancho de dados 330, Gancho da web 340, Gancho do roteador de ligação de dados 350 ou outros. Os ganchos associados ao Evento programável 320 podem envolver o acesso a dados internos de um Site 123 (por exemplo, WixData) armazenados no Banco de dados da área do site 124.
[000267] Na Etapa 730, o WBS 100 pode opcionalmente obter dados externos ao Banco de dados da área do site 124 e ao Navegador da web remoto 141 (por exemplo, de um banco de dados externo, de outro site, de um serviço remoto etc.). Em algumas modalidades, esses dados podem ser usados como parte do Evento programável 320.
[000268] Na Etapa 740, o WBS 100 pode solicitar ao Processador 260 para executar o código de back-end editável pelo usuário editável
127. Consequentemente, no Evento programável 320, a funcionalidade de back-end personalizada pode ocorrer na Página da web indexável
125. Como discutido anteriormente, essa funcionalidade de back-end personalizada pode ser definida em termos de sua funcionalidade, fonte de dados e tempo por entrada do usuário. O usuário pode receber controle guiado sobre a criação e edição de código (por exemplo, não precisa codificar funções inteiras do zero, mas recebe modelos ou amostras de código) sobre cada um desses atributos da funcionalidade de back-end personalizada.
[000269] Os sistemas e métodos consistentes com a presente divulgação também são direcionados para sistemas de hospedagem de sites sob demanda, incluindo funcionalidade para hospedagem de sites, veiculação de sites para clientes, monitoramento da carga do site e resposta à dinâmica de carregamento do site. Em algumas modalidades, a instância executável sob demanda pode monitorar a atividade de uso do site e ativar ou remover automaticamente algumas ou todas as instâncias de execução. Além disso, como discutido a seguir, as instâncias de execução do servidor da web geradas para veicular sites ou páginas podem incluir combinações de código genérico de site e código específico ou específico da página, resultando em uma veiculação responsiva e muito eficiente de sites e páginas altamente personalizados e individualizados.
[000270] Em geral, quando os usuários interagem com sites, eles podem fazer uma variedade de solicitações HTTP. Por exemplo, uma solicitação HTTP inicial pode ser feita para carregar uma página da web (que pode, em algumas situações, acionar solicitações HTTP adicionais para carregar elementos adicionais da página, como imagens ou scripts). Além disso, um usuário pode fazer solicitações HTTP no meio da sessão (por exemplo, selecionando um valor para um campo, clicando em uma imagem com hiperlink etc.). Além disso, um usuário pode fazer uma solicitação HTTP relacionada a dados, como através do envio de um formulário. Além disso, um usuário pode fazer uma solicitação HTTP de back-end , que pode ativar a funcionalidade de back-end (por exemplo, através do código de back-end , conforme descrito aqui).
[000271] Para acelerar o processo de carregamento de páginas e manipulação de solicitações HTTP, o sistema (por exemplo, WBS 100) pode ser configurado para utilizar a inicialização rápida de contêineres de docker ou código sem servidor configurado para um site ou página específica. Em algumas modalidades, como discutido aqui, um conjunto de contêineres em espera ou outros recursos de computação virtual pode ser fornecido com todo o código relevante não específico do site, mas sem nenhum código específico do usuário ou específico do site. O sistema pode escutar em uma porta ativa uma solicitação para um servidor para um site específico. Se houver um contêiner ativo ou outro recurso de computação virtual associado ao site específico, o sistema poderá se conectar a ele. Caso contrário, o sistema pode usar um contêiner em espera do conjunto e injetar nele o conteúdo específico do site solicitado ou instruí-lo a carregar esse conteúdo. Depois que o conteúdo específico do site para um determinado site é carregado, o contêiner ingressa em um conjunto de contêineres associados ao determinado site. Conforme discutido aqui, o conteúdo no nível do site injetado pode ou não incluir as páginas reais do site. Essas informações da página do site podem ser, por exemplo, material da página pronto para o navegador (por exemplo, uma coleção de códigos HTML, CSS e JavaScript), dados subjacentes da definição do site (por exemplo, usando arquivos XML ou expressões JSON) que são convertidos em material pronto por código do lado do cliente ou do servidor (como um módulo visualizador WBS) ou código de front-end ou de back-end (por exemplo, código JavaScript invocado pela página para ser executado no cliente, no servidor ou em ambos).
[000272] FIG. 8 representa um diagrama de blocos de um Sistema de instância de execução de servidor da web sob demanda 800, de acordo com algumas modalidades da presente divulgação. Como mostra a FIG. 8, o Sistema sob demanda 800 inclui um Processador 260, Memória 820 para armazenar sites servidos atualmente ou recentemente, e Armazenamento persistente 830 para armazenar todos os sites disponíveis para serem servidos. Em algumas modalidades, o Sistema sob demanda 800 também pode incluir ou ser associado a um Servidor proxy 840 para ajudar a determinar se uma nova instância de execução de servidor da web é necessária para atender a uma solicitação de site.
[000273] O Sistema WBS 100 e o Sistema sob demanda 800 armazenam e acessam o código para editar e atender solicitações da web, respectivamente. O Editor WBS 110 é usado para apresentar páginas da web de sites para solicitações de edição, recebidas do Dispositivo de desenvolvimento da web 140. As instâncias de execução do servidor da web são instanciadas com definições de código e página criadas e editadas usando o Editor WBS 110 e armazenadas no Banco de dados de área do site 124 para exibir a Página indexável na web 125 durante a edição do Site 123, bem como no tempo de execução. Em algumas modalidades, o Sistema sob demanda 800 pode ser um subsistema dentro do WBS 100. Em algumas outras modalidades, o WBS 100 e o Sistema sob demanda 800 podem compartilhar o acesso ao front-end 126 e back-end 127 da Página da web indexável 125 do Site
123. Em algumas modalidades, o Armazenamento persistente 830 pode ser um banco de dados semelhante ao Banco de dados da área do site 124 no WBS 100. Enquanto o WBS 100 pode armazenar o front-end 126 em formato de dados estruturados, o Sistema sob demanda 800 pode transformar o front-end 126 em um formato de código entendido pelo Navegador 131 do Dispositivo de visualização da web 130. Diferentemente do WBS 800, o Sistema sob demanda 800 normalmente tem acesso somente leitura ao front-end 126 e back-end 127 armazenados de uma Página da web indexável 125 (quando usado para exibição em tempo de execução de sites). Mas, quando usado em conjunto com o Editor WBS 110, o Sistema sob demanda 800 pode modificar o front-end 126 e/ou back-end 127 do Site 125 e outros componentes do Site 125. Deve-se esclarecer que o editor WBS 100 pode funcionar em conjunto com o Sistema sob demanda 800 (com o código do editor fazendo parte do Código genérico do servidor do site
824), mas o próprio editor pode funcionar como uma camada acima do Sistema sob demanda 800 e pode não afetar diretamente sua funcionalidade e decisões (por exemplo, alocação de instâncias de execução para atender solicitações recebidas).
[000274] O processador 260 pode ser associado a um ou mais servidores que hospedam elementos do Sistema sob demanda 800. Por exemplo, o Processador 260 pode ser associado a um único servidor ou a uma coleção coordenada (por exemplo, farm) de servidores. Além disso, em algumas modalidades, cada um dos elementos (por exemplo, cada elemento na Memória 820, cada elemento no Armazenamento persistente 830, Servidor proxy 840 etc.) pode ter seu próprio processador 260 (por exemplo, como parte de um servidor dedicado). Independentemente do número ou tipo de Processadores 260, cada um dos elementos mostrados no Sistema sob demanda 800 é capaz de funcionar de forma independente e de maneira coordenada.
[000275] A memória 820 pode ter uma ou mais instâncias de execução de servidor da web para veicular sites ou páginas a clientes. As instâncias em uso 821 podem ser instâncias de execução de servidor da web que estão servindo sites atual ou ativamente. As Instâncias disponíveis 822, por outro lado, podem ser um conjunto de instâncias de servidor da web disponíveis na Memória 820 que atualmente não hospedam nenhum site específico, mas estão disponíveis para isso. Em algumas modalidades, o número de instâncias de execução do servidor da web nas Instâncias disponíveis 822 pode ser um número constante. Em algumas outras modalidades, o número de instâncias de execução do servidor da web nas Instâncias disponíveis 822 pode variar e depender do número de instâncias de execução do servidor da web nas instâncias em uso 821. Por exemplo, se houver um total de 10.000 instâncias de execução, um aumento nas Instâncias em uso 821 pode significar uma diminuição nas Instâncias disponíveis 822 e vice-versa. O número de instâncias de execução do servidor da web nas Instâncias disponíveis 822 também pode ser uma porcentagem do número de instâncias de execução do servidor da web nas Instâncias em uso 821. As Instâncias em uso 821 podem, em algumas modalidades, ser representadas por uma estrutura de dados contendo um identificador exclusivo que identifica a Instância de execução 823 do servidor da web e outras instâncias que atualmente servem sites. Em algumas modalidades, uma estrutura de dados semelhante pode ser mantida por site hospedado pelo Sistema sob demanda 800 e todas essas estruturas de dados representam coletivamente as Instâncias em uso 821.
[000276] Uma Instância de execução de servidor da web 823 pode ser uma das instâncias em uso 821 que atende solicitações a um site com a ajuda de um servidor da web. A Instância de execução do servidor da web 823 pode incluir o Código genérico do servidor do site 824 e o Código específico do site N 833. O Código genérico do servidor do site 824 pode, por exemplo, ser um código comum incluído em todas as instâncias de execução do servidor da web. Por exemplo, esse código comum pode incluir elementos subjacentes do sistema da instância de execução do servidor da web (sistemas operacionais, servidores da web (por exemplo, Apache), servidores de banco de dados etc.) Em algumas modalidades, também pode incluir um editor WBS 100 ou ambiente de tempo de execução junto com serviços e plug-ins externos comuns. Além disso, em algumas modalidades, o código comum pode incluir elementos comuns do servidor no nível de aplicativo do site, como as bibliotecas e o código relacionado aos principais itens comuns, como aplicativos verticais WBS 100 etc. O código comum também pode incluir elementos de componentes comuns (por exemplo, galerias), especialmente para sites co-hospedados discutidos a seguir. Por todas as opções anteriores, o código genérico pode incluir elementos reais do lado do servidor (que podem ser armazenados e executados no servidor), bem como elementos do lado do cliente (armazenados no servidor e carregados em solicitações de páginas da web para o cliente de tempo de execução de WBS 100 em execução). Em algumas modalidades, diferentes grupos de sites podem incluir diferentes códigos genéricos de servidor de site 824. Assim, por exemplo, um grupo de sites de propriedade comum pode ter o Código genérico do servidor de site 824 comum. Isso também pode se aplicar, por exemplo, a vários sites com base na mesma estrutura de aplicativos de mercado vertical (por exemplo, restaurantes ou hotéis). Alternativamente, sites diferentes podem ter seu próprio Código genérico de servidor de site 824, que pode pertencer a todas as páginas da web em cada site.
[000277] O Código específico do site N 834 pode incluir o código específico para o site ou página que está sendo veiculado pela Instância de execução do servidor da web 823 (como o código de front-end 126 ou de back-end 127 criado pelo Programador/Designer 1540 do site 126 para o site específico). A Instância de execução 823 do servidor da web pode veicular um site ou página que inclui o Código específico do site N 834 usando um servidor da web (por exemplo, Apache, Tomcat, Nginx etc.) ou um servidor específico da WBS. O Código específico do site N 834 pode incluir, por exemplo, código para executar funcionalidades exclusivas do site ou da página específica, como funcionalidade do carrinho de compras, processamento de pagamentos, acesso ao banco de dados, integração ou execução de aplicativos, funções ou roteadores baseados em software e muito mais. A discussão anterior e aqui se refere ao Código específico do site 834 relacionado a um determinado site ou página e, correspondentemente, à Instância de execução do servidor da web 823, que pode atender a solicitações provenientes de clientes que usam o site ou a página fornecida. No entanto, o Sistema sob demanda 800 pode ser implementado em diferentes níveis de granularidade de código específico. O nível típico de granularidade pode estar no nível do site, ou seja, onde o Código específico do dite 834 abrange um site inteiro, que normalmente é o nível ideal para a reutilização da Instância de execução do servidor da web 823. No entanto, o sistema pode ser implementado usando um nível de granularidade de um grupo de sites (para um grupo de sites muito semelhantes), site inteiro, seção do site (ou seja, conjunto de páginas) e página única. Para grupos de sites, partes comuns de vários sites também podem ser incluídas no Código genérico do servidor do site 824, conforme indicado anteriormente.
[000278] A Instância de execução do servidor da web 826 das Instâncias disponíveis 822 pode ser usada para veicular o mesmo site fornecido pela Instância de execução do servidor da web 823 das Instâncias em uso 821, injetando o código específico do site N 833 na Instância de execução do servidor da web 826. Dessa maneira, a Instância de execução de servidor da web 823 pode gerar (e servir) sites e páginas individualizados com base no Código específico do site N exclusivo 834 associado a cada site ou página.
[000279] O Armazenamento persistente 830 pode incluir código genérico e específico para todos os sites hospedados pelo Sistema sob demanda 800 no Primeiro local da memória 831 e no Segundo local da memória 832, respectivamente. O Código genérico do servidor do site 824 pode ser armazenado, por exemplo, no Armazenamento persistente 830 no Primeiro local da primeira 831. O Código específico do site 833 e 834 pode ser armazenado no Segundo local da memória 832 e pode ser específico para os sites 1 e N, respectivamente. O Armazenamento persistente 830 pode, em várias modalidades, ser um sistema de arquivos distribuído, banco de dados ou outro sistema de armazenamento e pode ser baseado na nuvem (por exemplo, armazenamento como um serviço). O Primeiro local da memória 831 e o Segundo local da memória 832 podem ser em diferentes locais do mesmo sistema de armazenamento ou em diferentes sistemas de armazenamento que juntos formam o Armazenamento persistente 830. Em algumas modalidades, o Código específico do site 833 e 834 pode estar em diferentes locais de memória secundária ou no mesmo local, mas marcados separadamente.
[000280] O Código genérico de servidor do site 824 que reside no primeiro local da memória 831 do Armazenamento persistente 830 pode ser copiado para uma instância de execução de servidor da web semelhante à Instância de execução do servidor da web 823 após a ativação da instância. Dessa maneira, o Código genérico de servidor do site 824, bem como qualquer Código específico do site 833-834, pode ser integrado para veicular sites ou páginas que incluem sistemas comuns, estruturas da web, bibliotecas, componentes e plug-ins e elementos individualizados.
[000281] Em várias modalidades, cada um dos componentes da Memória 820, Armazenamento persistente 830 e Servidor proxy 840 pode ser implementado por meio de uma rede de computadores no local, uma rede de computadores na nuvem ou uma rede híbrida compreendendo as duas arquiteturas. Exemplos de ambientes de hospedagem em nuvem podem incluir AMAZON WEB SERVICES, MICROSOFT AZURE, IBM CLOUD e outros, bem como redes de nuvem proprietárias mantidas por empresas de hospedagem de sites.
[000282] O Servidor proxy 840 ajuda a determinar se um conjunto de Instâncias em uso 821 inclui uma instância de execução de servidor da web disponível para atender a uma solicitação de um site gerado a partir de um Navegador da web 131 do Dispositivo de visualização da web 130. O Servidor Proxy 840 determina, por exemplo, a disponibilidade de uma instância de execução de servidor da web, interagindo com a Memória 820. Por exemplo, a Memória 820 pode manter uma lista de Instâncias disponíveis 822 e Instâncias em uso 821, pode pesquisar as Instâncias de execução de servidor da web 823 e 826 para determinar seu estado atual ou pode receber outras informações de relatório sobre a disponibilidade de uma instância de execução de servidor da web. Em algumas modalidades, o Servidor proxy 840 pode manipular solicitações HTTP (por exemplo, de clientes) para acessar um site ou página específica e determinar se o site ou página específico já está hospedado por uma Instância de execução do servidor da web 823. Além disso, em algumas modalidades, o Servidor proxy 840 pode manter uma Tabela de estado 941 para uso na determinação do estado das Instâncias disponíveis 822 e Instâncias em uso 821. Essa tabela de estados pode identificar esses recursos e os sites ou páginas que eles já estão hospedando.
[000283] FIG. 9 representa um diagrama esquemático da interação entre os componentes do Sistema sob demanda 800, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 2, o Gerenciador da instância de execução do servidor da web 950 do Sistema sob demanda 800 gerencia as instâncias de execução do servidor da web, comunicando-se com as instâncias de execução do servidor da web 823 e 826 e o Servidor proxy 840. Em algumas modalidades, o Gerenciador de instância de execução do servidor da web 950 pode determinar se novas instâncias de execução do servidor da web precisam ser adicionadas às Instâncias disponíveis 822. Isso pode ocorrer, por exemplo, se houver um aumento no tráfego associado a um site ou página em particular que está sendo hospedado. Em algumas modalidades, o aumento da carga de tráfego pode ser previsto com base no conhecimento prévio inferido a partir de informações de tráfego periódicas reunidas para o site no passado. As informações de tráfego anteriores podem incluir dados de tráfego mensais, semanais, diários e horários, coletados para entender tendências sazonais outras vezes com o uso mais ativo do site e adicionar automaticamente mais instâncias de execução de servidor da web que atendem a um site específico. Em algumas outras modalidades, o Gerenciador de instância de execução do servidor da web 950 pode determinar se uma instância das Instâncias em uso 821 está inativa. Nessa situação, os recursos podem ser desperdiçados, pois as Instâncias em uso 821 estão em operação ou são operacionais, apesar de não haver solicitações dos clientes para responder com sites ou páginas. Assim, conforme discutido mais a seguir, quaisquer Instâncias em uso 821 inativas podem ser desativadas ou encerradas. Semelhante ao processo de adicionar novas instâncias de execução de servidor da web a um site, as previsões discutidas anteriormente com base em informações de uso anteriores podem ser usadas para encerrar instâncias quando houver menos tráfego previsto. O Gerenciador de instância de execução do servidor da web 950 pode decidir adicionar mais instâncias ao conjunto de Instâncias disponíveis 822 e/ou marcar uma Instância nas instâncias em uso 821 como inativa, delegando a determinação ao Servidor proxy 840. O Servidor proxy 840, conforme observado anteriormente, pode incluir a Tabela de estado 941 para ajudar a determinar se deve adicionar ou remover instâncias de execução de servidor da web das Instâncias em Uso 821 e Instâncias Disponíveis
822. A Tabela de estado 941 pode manter as informações que associam as Instâncias em uso 821 e as Instâncias disponíveis 822 em particular com seu estado atual, histórico ou futuro projetado. Essas informações de estado podem identificar sites ou páginas específicos que eles estão hospedando, podem hospedar no futuro ou hospedaram no passado. Além disso, a Tabela de estado 841 pode incluir informações adicionais (por exemplo, há quanto tempo as Instâncias em uso 821 e as Instâncias disponíveis 822 hospedam sites ou páginas, há quanto tempo as Instâncias em uso 821 e as Instâncias disponíveis 822 ficam inativas etc.).
[000284] FIG. 10 é um fluxograma que ilustra um Método 1000 para responder a uma solicitação da web enviada para um site, de acordo com algumas modalidades da presente divulgação. O método 1000 na FIG. 10 identifica dois caminhos para atender solicitações da web recebidas pelo Sistema sob demanda 800 de um Navegador da web 131 do Dispositivo de visualização da web 130. Quaisquer requisitos de configuração para atender à solicitação podem resultar na cópia do código específico do site solicitado para uma instância de execução do servidor da web que atende à solicitação para acessar um site específico.
[000285] Como mostrado na FIG. 10, na Etapa 1010, o Sistema sob demanda 800 armazena o Código genérico de servidor do site 824 no Primeiro local de memória 831 do Armazenamento persistente 830. Conforme discutido anteriormente, isso pode envolver o armazenamento de código comum a um grupo de sites (por exemplo, todos os que pertencem a um proprietário comum ou com base em uma estrutura vertical comum de site) ou comum a um grupo de páginas em um site. Além disso, o Código genérico de servidor de site 824 pode estar associado a um agrupamento arbitrário e definido de sites ou páginas. Conforme discutido anteriormente, o Código genérico de servidor do site 824 pode incluir código que especifica partes comuns de software de diferentes camadas, incluindo sistemas operacionais, estruturas da web, bibliotecas de software e componentes e plug-ins de sites, além do código do editor e visualizador do WBS 100.
[000286] Na Etapa 1020, o Sistema sob demanda 800 pode armazenar o Código específico do site N 834 no Segundo local de memória 832 do Armazenamento persistente 830. Conforme discutido anteriormente, o Código específico do site N 834 pode ser específico para um site ou página da web específica. O Código específico do site N 834 pode incluir, por exemplo, um widget, aplicativo ou funcionalidade de back-end ou de front-end personalizada. Além disso, o Código específico do site N 833 pode funcionar como um roteador para um site ou página específico, conforme discutido anteriormente, em que um ou mais segmentos de um URL inserido por um usuário ou fornecido de outra forma determina como o site ou página deve montar seu conteúdo (por exemplo, imagens personalizadas, texto, hiperlinks, formulários, recursos de comércio eletrônico, conteúdo personalizado etc.).
[000287] Na etapa 1030, o Sistema sob demanda 800 pode receber uma solicitação para acessar um site recebido de um Navegador da web 131 em um Dispositivo de visualização da web 130. O Sistema sob demanda 800 lida com a solicitação, verificando se o site ou a página solicitada está sendo atendida atualmente por uma ou mais instâncias de execução de servidor da web nas Instâncias em uso 821. Conforme discutido anteriormente, isso pode envolver a consulta das próprias Instâncias em uso 821, o Servidor proxy 840 ou a obtenção de um relatório de outro serviço que monitora as Instâncias em uso 821. Ao fazer referência a uma tabela de pesquisa ou tabela de estado, a operação atual (ou a falta dela) das Instâncias em uso 821 pode ser confirmada. Em algumas modalidades, um único servidor pode veicular vários sites ou vários clientes do mesmo site e a carga de tráfego e a atividade em um servidor específico podem ser rastreadas e levadas em consideração ao determinar qual servidor usar para responder a solicitações adicionais.
[000288] Na Etapa 1040, o On-Demand System 800 verifica se a Instância de execução do servidor da web 823 ou outras instâncias de execução do servidor da web nas Instâncias em uso 821 servem o site solicitado. Se sim, o processo 1000 pode, em algumas modalidades, pular para a Etapa 1070, que é discutida a seguir.
[000289] Se a resposta na Etapa 1040 for não, o processo 1000 poderá prosseguir para a Etapa 1050. Se nenhuma das instâncias de execução do servidor da web nas Instâncias em uso 821 veicular o site solicitado, a solicitação poderá ser encaminhada para uma instância de execução do servidor da web disponível nas Instâncias disponíveis 822. Em algumas modalidades, uma das instâncias de execução do servidor da web nas Instâncias disponíveis 822 pode ser selecionada para veicular o site solicitado. Em outras modalidades, como mostrado na FIG. 10, a instância de execução do servidor da web 826 nas Instâncias disponíveis 822 recebe a solicitação de serviço.
[000290] Na etapa 1060, uma solicitação pode ser enviada para procurar o código específico do site 833 no Local de memória secundária 832 correspondente ao site solicitado. Por exemplo, como ilustrado, o Código específico 833 do Site 123 é o código correspondente se a solicitação foi recebida para o Site 1. Em algumas modalidades, o Código específico do site 833 correspondente ao site solicitado é identificado e copiado para a Instância de execução do servidor da web
826. A Instância de execução 826 do servidor da web é adicionada à lista de Instâncias em uso 821 (por exemplo, em uma tabela de estados ou no Servidor proxy 840) e removida da lista de Instâncias disponíveis
822. A solicitação é respondida (por exemplo, ao cliente) pela Instância de execução do servidor da web 826. O processo 1000 pode então repetir (por exemplo, repetir para as etapas 1010, 1020 ou 1030). Além disso, na Etapa 1060, o Código específico do site 833 pode ser injetado na Instância de execução do servidor da web 826, conforme discutido anteriormente, para integração na construção de um site ou página específica solicitada pelo usuário.
[000291] FIG. 11 é uma ilustração de um Sistema sob demanda 800 para determinar se um site está hospedado e gerar ou instanciar instâncias de execução, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 11, o Servidor proxy 840 é usado para determinar as etapas para lidar com uma solicitação para acessar o Site 123 recebido pela Rede 160 do Navegador da web 131 do Dispositivo de visualização da web 130. Essa determinação pode resultar no tratamento imediato da solicitação pelo Gerenciador da instância de execução do servidor da web 950 ou na instanciação de uma instância de execução do servidor da web nas Instâncias disponíveis 822, usando o código específico do site solicitado antes de tratar a solicitação.
[000292] Como mostrado na FIG. 11, na Etapa 1110, o Sistema sob demanda 800 pode receber uma solicitação do Site 123 em uma Rede
160. A solicitação pode vir de um computador ou aplicativo do cliente, conforme discutido anteriormente. A solicitação pode ser uma solicitação HTTP, HTTPS ou outro tipo de solicitação de rede.
[000293] Na Etapa 1120, o On-Demand System 800 determina a melhor forma de atender o Site solicitado 123. Conforme discutido anteriormente, a determinação pode incluir identificar se uma solicitação pode ser tratada por um conjunto atual de Instâncias em uso 821 ou se é necessária uma instância de execução adicional de servidor da web. Por exemplo, o On-Demand System 800 pode determinar que a carga atual nas Instâncias em uso 821 ultrapassou um limite de uso (por exemplo, número limite de instâncias, quantidade de largura de banda usada, porcentagem de largura de banda usada, nível de uso de recursos do servidor como memória ou energia do processador etc.). Nesse caso, pode ser determinado que uma ou mais instâncias disponíveis 822 devem ser criadas ou utilizadas para satisfazer a demanda do site ou página em particular. Além disso, conforme discutido anteriormente, o On-Demand System 800 pode tentar prever um estado de carregamento futuro das Instâncias em uso
821. Essa previsão pode ser feita com base em níveis de carregamento anteriores, por exemplo. Com base no nível de carregamento previsto para as Instâncias em uso 821, o On-Demand System 800 pode determinar da mesma forma que uma ou mais Instâncias disponíveis 822 devem ser ativadas ou utilizadas para satisfazer a demanda prevista para o grupo de sites, site, conjunto de páginas ou conjunto de sites específico. O On-Demand System 800 também pode direcionar essa solicitação de entrada para uma das Instâncias em uso 821 (para fornecer o melhor tempo de resposta) e, paralelamente, decidir girar uma ou mais Instâncias disponíveis 822 para disponibilizá-las para futuras solicitações relacionadas ao site ou página fornecido.
[000294] Na Etapa 1121, como parte do processo de determinação, o On-Demand System 800 pode passar o controle para o Gerenciador da instância de execução do servidor da web 950 junto com a solicitação do Site 123 (por exemplo, uma cópia da solicitação ou informações sobre a solicitação). A solicitação pode ser uma solicitação para acessar uma página da web indexável do Site 123, um envio de um formulário ou vários outros tipos de solicitação.
[000295] Na Etapa 1122, o Gerenciador de instância de execução do servidor da web 950 pode delegar a determinação no Servidor proxy 840 para ajudar a determinar como lidar com a solicitação para veicular o Site 123. Isso pode envolver os tipos de tomada de decisão discutidos anteriormente, incluindo uma determinação do estado atual da carga associada ao Site 123, projeções de carregamento futuras para o site etc.
[000296] Na etapa 1123, o Servidor proxy 840 pode fazer referência à Tabela de estado 941 no Servidor proxy 840 para as instâncias nas Instâncias em uso 821 que podem veicular o site solicitado. Em algumas modalidades, a consulta na Tabela de estado 941 pode envolver a observação de uma coluna denominada “Site” 1143 na tabela para um URL do site correspondente. Outros identificadores (por exemplo, URL, nome da conta, nome arbitrário etc.) também são possíveis. Em algumas modalidades, a Etapa 1122 ocorre periodicamente, mesmo quando o On-Demand System 800 não recebeu uma solicitação para veicular um site - uma vez que o On-Demand System 800 pode monitorar periodicamente os níveis de carregamento com base nas tendências históricas do tráfego do site e pode girar ou desligar automaticamente instâncias de execução do servidor da web, exceto quando a tendência atual do tráfego sugerir o contrário. Em algumas modalidades, o Gerenciador de instância de execução do servidor da web 950 é encaminhado à solicitação do Site 123 após uma falha no tratamento da solicitação, indicando a indisponibilidade de uma instância de execução do servidor da web para atender à solicitação do Site 123.
[000297] Na Etapa 1123, o Servidor proxy 840 pode enviar uma solicitação para uma instância de execução de servidor da web nas Instâncias disponíveis 822 para escolher a primeira Instância de execução do servidor da web 826 disponível para ser marcada para veicular a solicitação do Site 123. Em outras modalidades, a Instância de execução do servidor da web 826 pode ser escolhida com base em uma política que contabiliza as diferenças entre as Instâncias de execução do servidor da web 826 que as tornam adequadas ou mais ideais para lidar com a solicitação (por exemplo, localização geográfica, aplicativos em execução, memória disponível, capacidade de processamento, nível de fragmentação do disco/memória etc.).
[000298] Na Etapa 1124, o On-Demand System 800 seleciona uma instância de execução de servidor da web nas Instâncias disponíveis
822 para atender à solicitação do Site 123. Em algumas modalidades, a Instância de execução do servidor da web 826 é selecionada para atender à solicitação do Site 123.
[000299] Na Etapa 1125, a Instância de execução do servidor da web 826 pode ser adicionada ao conjunto de Instâncias em uso 121 injetando o Código específico 833 do Site 123 na Instância de execução do servidor da web 826. Em algumas modalidades, o On-Demand System 800 pode solicitar ao Servidor proxy 840 para atualizar a Tabela de estado 941 com a entrada da Instância de execução do servidor da web 826. A Tabela de estado 841 pode, portanto, mudar, incluindo a adição de uma linha com os identificadores da Instância 1142 e do Site 1143 na Tabela de estado. Em algumas modalidades, a primeira instância disponível, por exemplo, Instância de execução do servidor da web 826, pode ser selecionada para ser injetada com o Código específico do site 833. Após essa injeção, a Instância de execução do servidor da web 826 seria removida do conjunto de instâncias disponíveis 822.
[000300] Em outras modalidades, a seleção pode ser baseada na proximidade geográfica do local da solicitação do Site 123 ou no número de solicitações da web em potencial que podem se originar de uma determinada localização geográfica. Em algumas modalidades, várias instâncias de execução de servidor da web podem ser injetadas com o Código específico do Site 123 833 e adicionadas ao conjunto de Instâncias em uso 821.
[000301] A determinação 1120 para lidar com o Site solicitado 123 pode ainda ter um limiar de tempo limite (por exemplo, 10 ou 100 milissegundos). O período de tempo limite pode corresponder ao padrão geral da web para atender a solicitações de páginas da web. As instâncias de execução do servidor da web que fazem parte das Instâncias disponíveis 822 ajudam a reduzir o tempo de instâncias de ativação quando uma nova solicitação de site é feita. Os problemas de arranque a frio de sistemas de construção de sites convencionais anteriores são assim reduzidos.
[000302] Na Etapa 1130, a Instância de execução do servidor da web 826 pode atender à solicitação do Site 123 usando o Código específico do Site 123 833. Como discutido anteriormente, a veiculação de um site ou página gerada usando o Código específico do Site 123 833, o conteúdo do site pode ser adaptado ao usuário ou à forma como o usuário chegou ao site (por exemplo, usando um roteador baseado em software). Em algumas modalidades, a própria etapa de injeção pode modificar o material injetado, por exemplo, adaptando-o ao usuário/plataforma/dispositivo específico que faz a solicitação ou a outras condições “ambientais” (país, idioma, banco de dados acessado, histórico de acesso do usuário etc.). O código do cliente que inicia a solicitação de rede pode adicionar parâmetros ou informações adicionais à solicitação de rede, para permitir que o módulo de injeção execute essa adaptação. As informações adicionais podem ser adicionadas diretamente (por exemplo, como URL adicionado ou outros parâmetros de solicitação) ou indiretamente (por exemplo, disponíveis através de uma solicitação adicional, armazenamento prévio em um banco de dados ou outro método).
[000303] FIG. 12 representa uma instanciação de elementos de infraestrutura de servidor com um site, de acordo com algumas modalidades da presente divulgação. As técnicas da FIG. 12 podem ser praticadas nos sistemas descritos anteriormente e descritos ao longo desta divulgação.
[000304] Como mostrado na FIG. 12, o Site 123 pode ser veiculado por meio de uma instância de execução de servidor da web, copiando o Código específico 833 do Site 123 para o contêiner 1221 ou a máquina virtual 1222. Em algumas modalidades, o Site 123 pode ser veiculado por um Processo do sistema operacional separado 1223 (por exemplo, via código sem servidor). O Código específico 833 do Site 123 pode incluir o front-end 126, o back-end 127 e o Código de referência do plug- in 1226, conforme discutido anteriormente em conjunto com a funcionalidade de back-end personalizada que pode ser fornecida nos sites. Em algumas modalidades, o front-end 126, o back-end 127 e o Código de referência do plug-in 1226 podem ser copiados individualmente para o Contêiner 1221, a Máquina virtual 1222 ou o Processo 1223. Em algumas modalidades, o Código genérico do servidor do site 824 pode ser copiado para o Contêiner 1221 ou a Máquina virtual 1222 (que posteriormente incluiria o Código específico do Site 123 833) como parte da instanciação da Instância de execução do servidor da web 826.
[000305] Em algumas modalidades, o uso do On-Demand System 800, como por meio de uma implementação de código sem servidor, pode melhorar o tempo de processamento e a utilização do servidor, reduzindo a latência para os usuários. Nas modalidades de código sem servidor, não há servidores dedicados para gerenciar. Em vez disso, o código (por exemplo, de front-end 126, de back-end 126 e Código de referência do plug-in 1226) pode ser fornecido como código e executado sob demanda na nuvem. Na medida em que os usuários são cobrados pela execução do código, eles podem ser cobrados proporcionalmente à execução real do código (em vez de com base em custos de infraestrutura dedicados ou servidores que devem permanecer alocados a um determinado site enquanto aguardam as solicitações recebidas). Como alternativa isso pode reduzir substancialmente os custos de um fornecedor de WBS online, permitindo que ele ofereça um melhor serviço aos seus usuários. Em algumas modalidades, o On-Demand System 800 pode definir um conjunto de linguagens de programação ou estruturas da web que ele suporta para o processamento de código sem servidor. O On-Demand System 800 também pode suportar WebSockets, streaming ou comunicações em blocos, protocolos adicionais (por exemplo, TCP e UDP etc.), memória como funcionalidade de serviço (por exemplo, para funções de código sem estado, sem efeitos colaterais) e nativas opções sem servidor (por exemplo, Go, Rust, C etc.). Ao processar o código sem servidor sob demanda, os problemas dos sistemas convencionais de hospedagem de sites (por exemplo, passando por um “arranque a frio” para carregar instâncias de máquinas ou sites) podem ser reduzidos. O horário de início de sites ou páginas (incluindo qualquer código em execução) pode ser inferior a 100 ms, reduzindo a latência e melhorando a experiência do usuário. Por outro lado, alguns sistemas convencionais experimentam um horário de início de sites ou páginas de aproximadamente 600 ms a 2 segundos, incluindo as funções de agendamento de sobrecarga, início de uma instância, início de um processo (por exemplo, execução de código) e funcionamento do manipulador de solicitações.
[000306] A Instância de execução de site 826 pode veicular vários sites através do Contêiner 1221, da Máquina virtual 1222 ou do Processo 1223. Em algumas modalidades, a Instância de execução do servidor da web 826 pode ter um conjunto de recursos Contêiner 1221, Máquina virtual 1222 e Processo 1223 dedicados a ele ou disponíveis. Vários Contêineres 1221, Máquinas virtuais 1222 e Processos 1223 podem veicular vários sites. Em algumas modalidades, as variantes da Instância de execução de site 826 que podem atender a vários sites podem incluir um único Contêiner 1221, Máquina virtual 1222 ou Processo 1223 que atende a vários sites. O Contêiner 1221, a Máquina Virtual 1222 e o Processo 1223, que atendem a vários sites, podem precisar que o código específico de vários sites seja copiado para atender a várias solicitações de site.
[000307] FIG. 13 representa as técnicas de monitoramento de carregamento de sites hospedados e o gerenciamento de Instâncias em uso 821, de acordo com algumas modalidades da presente divulgação. Essas técnicas podem ser praticadas nos sistemas como descrito anteriormente.
[000308] Como mostrado na FIG. 13, o Gerenciador da instância de execução do servidor da web 950 (como discutido anteriormente em conjunto com a FIG. 11) monitora ou se comunica com o Monitor de carregamento 1310 para determinar se algum dos sites veiculados pelo On-Demand System 800 tem uma carga mais pesada que a desejada ou orçada. Como discutido anteriormente, isso pode ser determinado com base nas características atuais, anteriores ou futuras da carga. Em algumas modalidades, a carga futura pode ser prevista com base no conhecimento prévio, com base na carga periódica reunida do site/servidor da web que hospeda vários sites no passado. O carregamento anterior pode incluir mensal, semanal, diariamente e a cada hora para entender as tendências sazonais em outros momentos com o uso mais ativo do site e adicionar automaticamente mais instâncias de execução de servidor da web que atendem a um site ou grupo de sites sendo veiculado por um servidor da web.
[000309] Quando os sites têm uma carga relativamente mais leve, algumas instâncias são removidas do conjunto de Instâncias em uso 821 para um site específico e movidas de volta para as Instâncias disponíveis 822. Em algumas modalidades, o Monitor de carregamento 1310 lista todos os sites 1311 hospedados pelo On-Demand System 800 e sua Carga 1312 em forma de tabela. Em algumas modalidades, a tabela do Monitor de carregamento 1310 que lista a carga do Site pode fazer parte da Tabela de estado 941 gerenciada ou acessível pelo Servidor proxy 840. Em algumas outras modalidades, o Monitor de carregamento 1310 pode ser uma tabela separada no Servidor proxy
840. Em outras modalidades, o Monitor de carregamento 1310 pode estar na Memória 820 do Sistema sob demanda 800.
[000310] Em algumas modalidades, as Instâncias em uso 821 podem ser uma coleção de conjuntos separados de instâncias que hospedam alguns ou todos os sites do On-Demand System 800. Em algumas modalidades, os sites 123 e 2, conforme ilustrado, são os sites hospedados pelo On-Demand System 800. Em várias modalidades, as Instâncias alocadas 1320 do Site 123 e as Instâncias alocadas do Site 2 são 1330 são o conjunto de instâncias de execução de servidor da web do Site 123 e do Site 2. Em algumas modalidades, as Instâncias alocadas 1320 do Site 123 e as Instâncias alocadas 1330 do Site 2 juntas são consideradas Instâncias em uso 822.
[000311] A tabela de carregamento do Monitor de carregamento 1310 pode ser atualizada diretamente pelo Gerenciador da instância de execução do servidor da web 950 ou pode solicitar que o Servidor proxy 840 a atualize. Em algumas modalidades, a tabela de carregamento do Monitor de carregamento 1310 é atualizada periodicamente pelo Servidor proxy 840 com base no número de solicitações de acesso aos Sites 1311 hospedados pelo On-Demand System 800. A tabela de carregamento do Monitor de carregamento 1310 pode ser atualizada com base em outras estatísticas de uso do site. Por exemplo, para um site com muitos recursos multimídia, as estatísticas de uso podem incluir o uso de ciclos de memória e processador para atender a solicitações de site, que envolvem a conversão de vídeo e áudio em diferentes formatos, com base no ambiente do dispositivo usado pelo uso. As instâncias de execução do servidor da web das Instâncias em uso 821 são movidas para as Instâncias disponíveis 822 quando o site que eles estão hospedando tem uma carga menor. Da mesma forma, quando um site tem uma carga mais alta, as instâncias de execução do servidor da web das Instâncias disponíveis 822 são Instâncias em uso marcadas 821 e o código específico do site para o site com carga mais pesada é injetado nessas instâncias de execução do servidor da web.
[000312] Em algumas modalidades, com base no Servidor proxy 840, observando que o Site 123 tem uma carga mais leve, o On-Demand System 800 pode fazer com que a Instância de execução de servidor da web 826 seja movida das Instâncias alocadas 1320 do Site 123 para o conjunto de Instâncias disponíveis 822. Em algumas modalidades, a Instância de execução do servidor da web 1323 é movida para as Instâncias disponíveis 822. Em algumas modalidades, várias instâncias de execução de servidor da web são movidas para as Instâncias disponíveis 822 ao mesmo tempo. O Servidor proxy 840, ao observar que o Site 2 tem uma carga mais pesada no Monitor de carregamento 1310, pode mover a Instância de execução do servidor da web 1127 das Instâncias disponíveis 822 definidas para o conjunto de Instâncias
1330 alocadas do Site 2. Como parte da Etapa 1342, o Site 2 pode ter o código específico do site ou da página que é injetado na Instância de execução M do servidor Web 1127 antes de movê-lo para as Instâncias alocadas 1330 do Site 2. Obviamente, as etapas 1341 e 642 são independentes e não ocorrem juntas ou em nenhuma ordem específica.
[000313] FIG. 14 representa o monitoramento das instâncias de execução de servidor da web disponíveis para hospedagem, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 14, o Gerenciador de instância de execução do servidor da web 950 monitora o número de Instâncias disponíveis 822. O Gerenciador de instância de execução do servidor da web 950 pode ativar novas instâncias e adicioná-las ao conjunto de Instâncias disponíveis 822 quando o número de instâncias de execução de servidor da web no conjunto de Instâncias disponíveis 822 for menor que um limite, conforme discutido anteriormente. O Gerenciador de instâncias de execução do servidor da web 950 pode encerrar as instâncias inversamente no conjunto de Instâncias disponíveis 822 quando o número de instâncias de execução do servidor da web for maior que um limite. Essas técnicas de ativação e desativação de instâncias de execução podem ser responsáveis pela demanda futura atual, anterior ou antecipada de sites ou páginas específicos, conforme discutido anteriormente.
[000314] Em algumas modalidades, o Gerenciador de instância de execução do servidor da web 950 pode esperar certo período de tempo antes de ativar novas instâncias para garantir que instâncias inativas identificadas na Tabela de estado 841 não sejam adicionadas novamente ao conjunto. Da mesma forma, em algumas modalidades, o Gerenciador de instâncias de execução do servidor da web 950 pode esperar um certo tempo antes de encerrar as instâncias disponíveis para garantir que uma instância não precise ser injetada com código específico do site para lidar com uma nova solicitação de site. Encerrar e girar as instâncias podem ser um processo demorado, e o Gerenciador de instâncias de execução do servidor da web 150 evita isso com frequência, aguardando depois de descobrir que várias instâncias disponíveis se desviam de um número limite.
[000315] Em algumas modalidades, o Gerenciador de instâncias de execução do servidor da web 950 gira e encerra as instâncias de execução do servidor da web quando o número atual de instâncias no conjunto de Instâncias disponíveis 822 difere do limite por um número ou porcentagem especificados. Isso permite que uma faixa de valores para o número de Instâncias disponíveis 822 esteja presente a qualquer momento. Em outras modalidades, o Gerenciador de instâncias de execução do servidor da web 850 pode reagir imediatamente após o desvio de um limite para instâncias de rotação e encerramento.
[000316] FIG. 15 representa um sistema de teste em tempo real de site exemplar, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 15, o Sistema de teste em tempo real do site 1500 inclui o Processador 260, Memória 820, Banco de dados da área do site 124 para armazenar dados usados pelos sites, o Ambiente de implantação 1510 que fornece acesso aos dados relacionados a um site acessado. Em algumas modalidades, o Sistema de teste em tempo real do site 1500 também pode incluir o Ambiente de teste 1520, fornecendo acesso aos dados relacionados a um site acessado para fins de teste. Termos alternativos podem ser usados para teste/implantação, como desenvolvimento/tempo de execução, preparação/produção e teste/produção.
[000317] Em algumas modalidades, o Sistema sob demanda 800 pode ser um subsistema incluído no todo no Sistema de teste em tempo real do site 1500. Em algumas modalidades, o Sistema de teste em tempo real do site 1500 pode ser composto parcialmente ou pode incluir o On-Demand System 800.
[000318] O Ambiente de implementação 1510 pode ser um conjunto de componentes de software em execução em uma instância de execução de servidor da web em um On-Demand System 800.
[000319] O Ambiente de teste 1520 pode ser um conjunto de componentes de software em execução em uma instância de execução de servidor da web no On-Demand System 800. Em algumas modalidades, um Ambiente de teste 1520 é gerado com base no tipo de dispositivo usado para acessar um site. Por exemplo, o Site 123 acessado através do Navegador da web 141 no Dispositivo de visualização da web 140 pode resultar na criação do Ambiente de teste 1520, que pode ter aparência e layout diferentes se o Dispositivo de visualização da web 140 for um computador ou telefone móvel. Em algumas outras modalidades, um Ambiente de teste 1520 pode ser gerado com base em qual usuário está acessando o site. Por exemplo, um Programador/Designer 1540 que solicita acesso ao Site 123 pode resultar na criação do Ambiente de teste 1520. Em algumas modalidades, um Ambiente de teste 1520 pode ser compartilhado entre usuários. O Ambiente de teste 1520 pode ser diferente para diferentes usuários. Em algumas modalidades, o Ambiente de teste 1520 pode ser compartilhado entre vários sites armazenados no Banco de dados de área de site 124. Em algumas modalidades, uma instância do Ambiente de teste 1520 pode estar sempre disponível e o Programador/Designer 1540 pode selecionar entre acessar um determinado site por meio do Ambiente de teste 1520 ou Ambiente de implantação 1510.
[000320] O Usuário final 1530 pode acessar um site e seus dados em um Ambiente de implantação 1510 através da Rede 160. Em algumas modalidades, o Usuário final 1530 pode acessar o Site 123 através do Navegador da web 131 no Dispositivo de visualização do Site 130, consistente com as modalidades anteriores.
[000321] O Programador/Designer 1540 pode acessar um site e seus dados em um Ambiente de teste 1520 através da Rede 160. O Programador/designer 1540 pode acessar o Site 123 através do Navegador da web 141 no Dispositivo de desenvolvimento de sites 140. Em algumas modalidades, o Programador/Designer 1540 pode acessar o Site 123 no Ambiente de implantação 1510 usando o Navegador da web 131 no Dispositivo de visualização da web 130. Deve-se notar que o Dispositivo de visualização da web 130 e o Dispositivo de desenvolvimento 140 podem ser o mesmo dispositivo.
[000322] O Usuário final 1530 e o Programador/Designer 1540 podem ter diferentes funções de um mesmo usuário acessando o Site
123. Em algumas modalidades, um usuário pode alterar as funções acessando o Site 123 usando diferentes dispositivos. Por exemplo, um usuário que acessa o Site 123 usando o Dispositivo da equipe de fornecedores de WBS 150 ou o Dispositivo de desenvolvimento do Site 140 pode ser considerado Programador/Designer 1540. Um usuário que acessa o Site 123 usando o Dispositivo de visualização de site 130 pode ser considerado como Usuário final 1530. Um site pode ser acessado usando o Ambiente de implantação 1510 ou o Ambiente de teste 1520, com base no fato de o usuário ser Usuário final 1530 ou Programador/Designer 1540, respectivamente. Além disso, um site pode ser acessado usando o Ambiente de implantação 1510 ou o Ambiente de teste 1520, com base no fato de a solicitação ter se originado no Dispositivo de visualização do Site 130 ou no Dispositivo de desenvolvimento do Site 140. Em algumas modalidades, um site pode ser acessado usando o Ambiente de implantação 1510 ou o Ambiente de teste 1520 com base em uma combinação de usuário e tipo de dispositivo.
[000323] FIG. 16a representa um diagrama esquemático de um Ambiente de desenvolvimento 1510 para acessar elementos de dados, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 16a, o Ambiente de implantação 1510 pode solicitar ao Processador 260 para ajudar a acessar os dados em tempo real
1610. O Ambiente de implantação 1510 pode não acessar os dados de teste 1620, representados por uma linha tracejada. FIG. 16b representa um diagrama esquemático de um Ambiente de teste 1520 para acessar elementos de dados, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 16b, o Ambiente de teste 1520 pode solicitar ao processador 260 para ajudar a acessar os dados em tempo real 1610 e os dados de teste 1620. O Programador/Designer 1540 acessando um Site 123 usando o Ambiente de teste 1520 pode solicitar elementos de dados associados à Página indexável 125 do Site 123. O Ambiente de teste 1520 pode ser configurado para receber solicitações de elementos de dados de um usuário e pode encaminhar as solicitações para os dados de teste 1620. Em algumas modalidades, os dados de teste 1620 podem determinar se o elemento de dados solicitado está presente nos dados de teste 1620 ou encaminhar a solicitação para os dados em tempo real 1610. Em algumas modalidades, o Ambiente de teste 1520 pode ele próprio determinar se deve solicitar os dados em tempo real 1610 ou os dados de teste 1620 para um determinado elemento de dados. Em algumas modalidades, o Ambiente de teste 1520 pode acessar os dados em tempo real 1610 e os dados de teste 1620 depois de copiá-los para a Memória 820.
[000324] FIG. 17 é uma ilustração do acesso ao site para dados em tempo real e de teste em um Ambiente de teste 1520, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 17, a Página da web indexável 125 do Site 123 está sendo acessada usando o Navegador da web 141 no Dispositivo de desenvolvimento da web 140. A Página indexável da web 125 e os elementos de dados associados estão sendo acessados pelo Ambiente de teste 1520.
[000325] A Página indexável da web 123 pode acessar os dados em tempo real 1610 e os dados de teste 1620 como parte do acesso aos elementos de dados associados à Página indexável da web 125. Em algumas modalidades, todas as solicitações para acessar elementos de dados podem primeiro ser enviadas para os dados de teste 1620. Os dados de teste 1620 podem filtrar solicitações de acesso ao elemento de dados que podem ser tratadas pelos próprios dados de reste 1620 antes de encaminhar as solicitações para os dados em tempo real 1610.
[000326] FIG. 18 representa a geração de dados de teste usados em um Ambiente de teste 1520 para sites de teste, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 18, os dados em tempo real 1610 fazem parte dos dados de teste 1620. Em algumas modalidades, a ordem de adição de dados marcados inseridos 1730 e dados marcados excluídos 1740 pode ser diferente. Os dados marcados inseridos 1730 e os dados marcados excluídos 1740 podem ser atravessados simultaneamente para evitar adicionar algo aos dados de teste 1620 e, posteriormente, excluir os mesmos excluídos marcados em dados marcados excluídos 1740.
[000327] Os dados marcados inseridos 1730 e os dados marcados excluídos 1740 podem persistir no Banco de dados da área de site 124. Em algumas modalidades, os dados marcados inseridos 1730 e dados marcados excluídos 1740 podem residir na Memória 920 até que a sessão para acessar o Site 123 no Ambiente de teste 1520 esteja ativa. Os dados marcados inseridos 1730 e dados os marcados excluídos 1740 podem persistir no Banco de dados da área de site 124 quando uma sessão se torna inativa. Por exemplo, o Programador/Designer 1540 pode solicitar explicitamente que os dados marcados inseridos 1730 e os dados marcados excluídos 1740 continuem no Banco de dados da área do site 124. Em algumas modalidades, os dados marcados inseridos 1730 e os dados marcados excluídos 1740 podem compartilhar o mesmo local no Banco de dados de área de site 124. Os dados marcados inseridos 1730 e os dados marcados excluídos 1740 podem persistir com base no número de solicitações de leitura. Os elementos de dados nos dados marcados inseridos 1730 podem seletivamente persistir no Banco de dados da área do site 124. Os elementos de dados podem ser persistentemente selecionados com base em critérios adicionais, como o número de vezes que um elemento de dados é solicitado a ser lido ou o tempo em que um elemento de dados neles não mudou ou o número de sessões em que os dados foram acessados.
[000328] FIG. 19 é um fluxograma que ilustra um Método 1900 para acessar um site em um ambiente de implantação, de acordo com algumas modalidades da presente divulgação.
[000329] Como mostrado na Etapa 1910. Os elementos de dados atualizados e adicionados ao acessar um site no Ambiente de implantação 1510 são armazenados nos dados em tempo real 1610 do Banco de dados de área de site 124.
[000330] Na Etapa 1920, os dados em tempo real 1610, armazenados no Banco de dados da área do site 124 associados a uma página indexável de um site acessado no Ambiente de implantação 1510 são acessados pelo Sistema de teste em tempo real do site 1500, como parte da veiculação de páginas da web solicitadas por um usuário.
[000331] Na Etapa 1930, os elementos de dados acessados na Etapa 1920 são aplicados à página indexável à qual estão associados para apresentar a página no Navegador da web 131 do Dispositivo de visualização da web 130 usado pelo Usuário final 1530.
[000332] FIG. 20 é um fluxograma que ilustra um Método 2000 para acessar um site em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação.
[000333] Na Etapa 2010, o Sistema de teste em tempo real do site 1500 pode receber uma solicitação para realizar o teste no site (por exemplo, Site 123) armazenado no banco de dados comum (por exemplo, Banco de dados de área de site 124). Na Etapa 2020, o Sistema de teste em tempo real do site 1500 lida com a solicitação de dados feita como parte do processo de teste de um site usando o Ambiente de teste 1520. Por exemplo, o Site 123 pode ser testado pelo Programador/Designer 1540 acessando o Site 123 usando o Navegador da web 141 do Dispositivo de desenvolvimento de sites 140. Por exemplo, o Programador/Designer 1540 pode solicitar a Página da web indexável 125 do Site 123 digitando o URL. Além disso, em algumas modalidades, o URL pode ser especificado por um aplicativo. A solicitação inclui a solicitação tanto ao front-end 126 quanto também aos elementos de dados do Grupo de dados 210 associados à Página da web indexável 125 do Site 123. Uma solicitação de leitura para os dados pode ser feita como parte do processo de acesso a uma página da web.
[000334] Como mostrado na FIG. 20, na Etapa 2030, o Sistema de teste em tempo real do site 1500 verifica se o teste foi concluído. Em algumas modalidades, o teste de um site é considerado concluído se o site for acessado através do Ambiente de teste 1520 por um determinado período de tempo. O teste pode ser considerado concluído após um certo número de solicitações de dados. O teste também pode ser considerado concluído quando o Programador/Designer 1540 acessando um site através do Navegador da web 141 do Dispositivo de desenvolvimento de site 140 fecha a guia ou janela do navegador usada para acessar o site. O teste também pode ser considerado concluído quando o Programador/Designer 1540 solicita explicitamente isso ao Sistema de teste em tempo real do site 1500. Se a resposta para a Etapa 2030 for não, o Método 2000 poderá retornar à Etapa 2010 e estar pronto para receber a próxima solicitação de dados. Se a resposta para a etapa 2030 for sim, o Método 2000 poderá prosseguir para a Etapa 2040. Na etapa 2040, o Método 2000 pode aplicar as alterações feitas nos elementos de dados e salvas nos dados de teste 1620 nos elementos de dados correspondentes nos dados em tempo real 1610. A Etapa 2040 pode ser opcional, pois o Programador/Designer 1540 pode solicitar, por exemplo, que as alterações de dados incorporadas nos dados de teste 1620 sejam descartadas.
[000335] Na Etapa 2050, todos os marcadores associados às atualizações dos elementos de dados feitos durante o teste do Site 123 no Ambiente de teste 1520 podem ser excluídos.
[000336] FIG. 21 é um fluxograma que ilustra um Método 2100 para lidar com solicitações de dados em um Ambiente de teste 1520, de acordo com algumas modalidades da presente divulgação. O Método 2100 na FIG. 21 identifica um dos cinco caminhos exemplificativos para lidar com a solicitação de entrada de elementos de dados associados a um site acessado por um Programador/Designer 1540.
[000337] Como mostrado na FIG. 21, na Etapa 2110, o Sistema de teste em tempo real do site 1500 recebe uma solicitação de dados no Ambiente de teste 1520. A solicitação de dados faz parte do acesso a um site para teste no Ambiente de teste 1520. Por exemplo, um Programador/Designer 1540 acessando um Site 123 através do Dispositivo de desenvolvimento de site 140 pode provocar uma solicitação para o Elemento de dados 211 do Grupo de dados 210 associado ao Site 123.
[000338] Na Etapa 2120, o Sistema de teste em tempo real do site 1500 determina o tipo de solicitação para acessar os elementos de dados associados a um site que está sendo testado. A determinação resulta em diferentes tipos de solicitações sendo processadas. A solicitação de dados pode ser uma solicitação de leitura para acessar os elementos de dados associados a um site que está sendo testado pelo Developer/Designer 1540 quando eles solicitam uma página da web indexável digitando uma URL. Em algumas modalidades, a solicitação de dados pode ser uma solicitação de gravação para adicionar um elemento de dados. Por exemplo, o Site 123 de teste do Programador/Designer 1540 pode enviar um formulário na Página indexável da web 125 solicitando a criação de um novo elemento de dados a ser adicionado ao Grupo de dados 210. A solicitação de dados pode ser uma solicitação de atualização para alterar o conteúdo de um elemento de dados associado ao site que está sendo testado pelo Developer/Designer 1540. A solicitação de dados pode ser uma solicitação de exclusão para remover um elemento de dados associado a um site que está sendo testado pelo Developer/Designer 1540.
[000339] Na Etapa 2121, o Sistema de teste em tempo real do site 1500 determinou na Etapa 2120 que a solicitação de dados é procurar elementos de dados associados ao site que está sendo testado pelo Developer/Designer 1540 ou procurar o resultado dessa operação de pesquisa.
[000340] Na Etapa 2122, o Sistema de teste em tempo real do site
1500 determinou na Etapa 2120 que a solicitação de dados deve ler os elementos de dados associados ao site que está sendo testado pelo Developer/Designer 1540.
[000341] Na Etapa 2123, o Sistema de teste em tempo real do site 1500 determinou na Etapa 2120 que a solicitação de dados é adicionar elementos de dados associados ao site que está sendo testado pelo Developer/Designer 1540.
[000342] Na Etapa 2124, o Sistema de teste em tempo real do site 1500 determinou na Etapa 2120 que a solicitação de dados deve atualizar os elementos de dados associados ao site que está sendo testado pelo Developer/Designer 1540.
[000343] Na Etapa 2125, o Sistema de teste em tempo real do site 1500 determinou na etapa 2120 que a solicitação de dados é para excluir os elementos de dados associados ao site que está sendo testado pelo Developer/Designer 1540.
[000344] FIG. 22 é um fluxograma que ilustra um Método 2200 para lidar com solicitações de leitura em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação. O Método 2200 na FIG. 22 identifica três caminhos para determinar se uma solicitação de dados precisa ser respondida e, em caso afirmativo, se deve usar elementos de dados nos dados de teste 1620 ou dados em tempo real
1610.
[000345] Como mostrado na FIG. 22, na Etapa 2122, uma solicitação de dados recebida foi determinada no Método 2100 como uma solicitação de leitura para elementos de dados no Banco de dados da área de site 124 e Memória 820.
[000346] Na Etapa 2210, o Sistema de teste em tempo real do site 1500 procura o elemento de dados solicitado nos dados de teste 1620 e, quando uma correspondência é encontrada, verifica se está marcado como excluído. Se a resposta na Etapa 2210 for sim, o Método 2200 poderá prosseguir para a Etapa 2120 e considerar o Método 2200 completo. Na Etapa 2, nenhuma mensagem de elemento encontrado é retornada. Por exemplo, o Programador/Designer 1540 acessando a Página indexável da web 125 do Site 123 pode enviar uma solicitação para o Elemento de dados 1741 em dados marcados excluídos 1740 dos dados de teste 1620, resultando na mensagem “nenhum elemento de dados encontrado” sendo retornada.
[000347] Se a resposta na Etapa 2210 for não, o Método 2100 poderá prosseguir para a Etapa 2130. Como mostrado na FIG. 22, na Etapa 2230, o Sistema de teste em tempo real do site 1500 procura o elemento de dados solicitado em dados marcados inseridos 1730 de dados de teste 1620.
[000348] Se a resposta na etapa 2230 for sim, o Método 2200 poderá prosseguir para a Etapa 2240. Na etapa 2240, o elemento de dados solicitado é encontrado nos dados de teste 1620 e é retornado. O elemento de dados solicitado pode estar em dados marcados inseridos 1730 de dados de teste 1620, como adicionado anteriormente como um novo elemento de dados. Além disso, o elemento de dados solicitado pode estar nos dados marcados inseridos 1730, conforme foi atualizado durante o teste de um site anteriormente. Por exemplo, a solicitação Programador/Designer 1540 para acessar o elemento de dados do Contato dois 1760 no Ambiente de teste 1520 resultará no Elemento de dados 1732 em dados marcados inseridos 1730 dos dados de teste 1620 serão retornados após o Método 2200 executar a Etapa 2240. O mesmo elemento de dados quando solicitado no Ambiente de implantação 1510 pode resultar no retorno do Elemento de dados 1752.
[000349] Se a resposta na Etapa 2230 for não, o Método 2200 poderá prosseguir para a Etapa 2250. Na Etapa 2250, o elemento de dados solicitado é retornado dos dados em tempo real 1610.
[000350] FIG. 23a é um fluxograma que ilustra um Método 2300 para atualizar elementos de dados em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação. O Método 2300 na FIG. 23a define um local para armazenar o elemento de dados atualizado solicitado durante o teste de um site.
[000351] Como mostrado na FIG. 23a, na Etapa 2124, uma solicitação de dados recebidos foi determinada no Método 2100 como uma solicitação para atualizar um elemento de dados presente nos dados em tempo real 1610 ou dados marcados inseridos 1730 dos dados de teste 1620 durante o teste de um site.
[000352] Na Etapa 2310, o Sistema de teste em tempo real do site 1500 determina o local do elemento de dados que está sendo solicitado para ser atualizado, verificando primeiro os dados marcados inseridos 1730 dos dados de teste 1620.
[000353] Se a resposta para a Etapa 2310 for sim, o Método 2200 prosseguirá para a Etapa 2320. Na etapa 2320, um elemento de dados correspondente que está sendo solicitado a ser atualizado é atualizado.
[000354] Se a resposta para a Etapa 2310 for negativa, o Método 2200 continuará para a Etapa 2330, indicando que o elemento de dados solicitado para atualização não foi atualizado no passado e está presente apenas nos dados em tempo real 1610. O elemento de dados nos dados em tempo real 1610 é copiado para dados marcados excluídos 1740 para evitar qualquer acesso futuro aos dados no Ambiente de teste 1520.
[000355] Na Etapa 2340, o Sistema de teste em tempo real do site 1500 insere o elemento de dados atualizado nos dados de teste 1620. Em algumas modalidades, adicionar um elemento de dados envolve adicionar uma entrada no banco de dados e marcar em uma coluna adicional que foi adicionada através do Ambiente de teste. O elemento de dados inserido nos dados marcados inseridos 1730 dos dados de teste 1620 do Ambiente de teste 1620 não pode ser acessado por solicitações no Ambiente de implantação 1610. Por exemplo, a solicitação Developer/Designer 1540 para atualizar o Elemento de dados 1752 através do Site 123 resulta na inserção do Elemento de dados 1732 nos dados marcados inseridos 1730 dos dados de teste
1620.
[000356] A FIG. 23b é um fluxograma que ilustra outro Método 2300 para atualizar elementos de dados em um Ambiente de implantação 1510, de acordo com algumas modalidades da presente divulgação. O método garante que os dados em tempo real 1610 estejam disponíveis em tempo real para o Developer/Designer 1540 testando um site usando o Ambiente de teste 1520.
[000357] Na etapa 2350, é recebida uma solicitação para atualizar o elemento de dados no Ambiente de implementação 1510.
[000358] Na etapa 2360, um elemento de dados nos dados em tempo real 1610 é atualizado conforme a solicitação.
[000359] Na Etapa 2370, uma solicitação de consulta para identificar o elemento de dados atualizado nos dados em tempo real 1610 na Etapa 2360 é feita nos dados marcados excluídos 1740. Um elemento de dados correspondente encontrado nos dados marcados excluídos 1740 foi atualizado ou excluído no Ambiente de teste 1520.
[000360] Se a resposta na Etapa 2370 for não, o Método 2300 prossegue para a Etapa 2380, onde a tarefa é considerada concluída e o Método 2300 sai.
[000361] Se a resposta na etapa 2370 for sim, o método 2300 continuará na etapa 2390. Na Etapa 2390, o elemento de dados solicitado para ser atualizado por meio do Ambiente de implementação 1510 é atualizado em dados marcados excluídos 1740. Isso resulta na atualização do elemento de dados nos dados em tempo real 1610 nos resultados da consulta, conforme discutido no Processo 2500 a seguir.
[000362] A FIG. 23c é um fluxograma que ilustra outro Método 2300 para adicionar os elementos de dados em um Ambiente de teste, de acordo com algumas modalidades da presente divulgação. O Método 2300 na FIG. 23c define um local para armazenar novos dados solicitados a serem adicionados ao testar um site.
[000363] Como mostrado na FIG. 23c, na Etapa 2123, uma solicitação de dados recebidos foi determinada no Método 2100 como uma solicitação para adicionar um novo elemento de dados não presente nos dados em tempo real 1610 aos dados de teste 1620 durante o teste de um site.
[000364] Na Etapa 2392, o Sistema de teste em tempo real do site 1500 insere o elemento de dados nos dados de teste 1620. Em algumas modalidades, adicionar dados envolve adicionar uma entrada no banco de dados e marcar em uma coluna adicional que foi adicionada através do Ambiente de teste. O elemento de dados inserido nos dados marcados inseridos 1730 dos dados de teste 1620 do Ambiente de teste 1620 não pode ser acessado por solicitações no Ambiente de implantação 1610. Por exemplo, o Programador/Designer 1540 pode solicitar para atualizar os resultados do Elemento de dados 1731 através do Site 123 na inserção do Elemento de dados 1731 nos dados marcados inseridos 1730 dos dados de teste 1620.
[000365] A FIG. 24 é um fluxograma que ilustra um Método 2400 para excluir elementos de dados de um Ambiente de teste, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 24, o elemento de dados solicitado para ser excluído pode ser apresentado nos dados em tempo real 1610 ou pode ter sido adicionado anteriormente através do Ambiente de teste e está presente nos dados marcados inseridos 1730.
[000366] Como mostrado na FIG. 24, na Etapa 2125, uma solicitação de dados recebida foi determinada no Método 2100 como uma solicitação de exclusão para elementos de dados no Banco de dados da área de site 124 ou Memória 820.
[000367] Na Etapa 2410, o Sistema de teste em tempo real do site 1500 pode inserir o elemento de dados solicitado para ser excluído nos dados marcados excluídos 1740 dos dados de teste 1620. Qualquer elemento de dados, tenha sido adicionado ou atualizado no Ambiente de teste, pode ser adicionado aos dados marcados excluídos 1740, pois todos os elementos dos dados marcados excluídos 1740 podem ser ignorados quando uma solicitação de elementos de dados associados a um site em teste é feita.
[000368] Na Etapa 2420, uma pesquisa pelo elemento de dados solicitado a ser excluído é pesquisada em dados marcados inseridos 1730 de dados de teste 1620. O processo 2300 é considerado completo se nenhum desses dados for encontrado nos dados de teste 1620. Por exemplo, o Programador/Designer 1540 testando o Site 123 no Navegador da web 141 solicita a exclusão dos resultados do Elemento de dados 1741 no Elemento de dados 1741 inserido nos dados marcados excluídos 1740. O Elemento de dados 1741 não está presente nos dados marcados inseridos 1730 indica que nenhum dado precisa ser removido e o Processo 2400 é considerado completo. Se a resposta na Etapa 2420 for não, o Método 2400 não encontrou dados marcados inseridos 1730, um elemento de dados solicitado a ser excluído e o Método 2400 prossegue para a Etapa 2430, onde a tarefa é concluída e o Método 2400 sai.
[000369] Se a resposta na Etapa 2420 for sim, o Método 2400 encontrou nos dados marcados inseridos 1730 um elemento de dados solicitado para ser excluído. Na etapa 2440, o elemento de dados dos dados de teste 1620 é removido dos dados marcados inseridos 1730.
[000370] A FIG. 25 ilustra um processo de sobreposição para gerar os resultados da consulta de dados de teste, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 25, o método 2500 é um processo de quatro etapas que acessa simultaneamente os dados em tempo real 1610, dados marcados inseridos 1730 e dados marcados excluídos 1740 dos dados de teste
1620.
[000371] Como mostrado na FIG. 25, na Etapa 1, os elementos de dados correspondentes à consulta são acessados dos dados em tempo real 1610, dados marcados inseridos 1730 e dados marcados excluídos
1740. Em algumas modalidades, os elementos de dados são acessados executando uma consulta no Banco de dados da área do site 124 contra os dados em tempo real 1610 e os dados marcados inseridos 1730 e dados marcados excluídos 1740 dos dados de teste 1620. Em algumas modalidades, os resultados das consultas podem ser organizados como uma Tabela fundida 2510.
[000372] Os elementos de dados são classificados conforme solicitado na consulta. Em algumas modalidades, os elementos de dados são classificados pela coluna “B” na 2510 em ordem decrescente. Em algumas modalidades, a ordem pode envolver mais de uma coluna. Em algumas modalidades, quando não há pedido solicitado, uma coluna aleatória é escolhida e classificada em ordem crescente ou decrescente. Em algumas modalidades, uma chave primária é adicionada às colunas usadas na classificação.
[000373] Na Etapa 2, o sistema percorre os elementos de dados nos dados em tempo real 1610, dados marcados inseridos 1730 e dados marcados excluídos 1740 simultaneamente para selecionar os elementos de dados a serem incluídos nos dados de teste 1620.
[000374] Para determinar os elementos de dados a serem incluídos no Teste 1720, um indicador é definido no primeiro elemento dos dados em tempo real 1610, dados marcados inseridos 1730 e dados marcados excluídos 1740. Em algumas modalidades, o indicador é colocado no elemento de dados mais baixo com base na coluna “B.” O registro mais baixo atual nos dados em tempo real 1610, dados marcados inseridos 1730 e dados marcados excluídos 1740 é comparado para identificar o elemento de dados mais baixo. O menor valor encontrado pode estar presente em vários locais. Por exemplo, o Elemento de dados 2520 e 2530 são os elementos de dados mais baixos nos dados em tempo real 1610 e dados marcados excluídos 1740 e têm o mesmo conteúdo.
[000375] Depois que o elemento de dados mais baixo é identificado, é determinado se um elemento de dados deve ser incluído nos dados de teste 1620 com base nas seguintes regras. Se o elemento de dados existir nos dados em tempo real 1610 e nos dados marcados excluídos 1740, o elemento de dados não será incluído nos dados de teste 1620. Por exemplo, o Elemento de dados 2520 e 2530 tem o mesmo conteúdo e existe nos dados em tempo real 1610 e nos dados marcados excluídos 1740, indicando que foi solicitado que o elemento de dados fosse excluído no Ambiente de teste 1520 anteriormente ao testar um site. Ele também poderia ter sido atualizado e o Elemento de dados 2560 foi o elemento atualizado resultante.
[000376] Se o elemento de dados existir apenas nos dados em tempo real 1610, ele será incluído nos dados de teste 1620. Por exemplo, o Elemento de dados 2540 está presente apenas nos dados em tempo real 1610, indicando que não foi alterado ou excluído no Ambiente de teste ao testar um site associado ao Elemento de dados 2540.
[000377] Se o elemento de dados existir apenas em dados marcados inseridos 1730, ele será incluído nos dados de teste 1620. Por exemplo, o Elemento de dados 2540 está presente apenas nos dados marcados excluídos 1740, indicando que ele foi inserido como um novo elemento de dados ou como parte da atualização do Elemento de dados 2520 durante o teste de um site.
[000378] Depois que um elemento de dados é incluído ou pulado, apenas as fontes de elemento de dados que tiveram o elemento de dados mais baixo têm seus indicadores para serem movidos para o próximo elemento de dados. Em algumas modalidades, os indicadores para os dados em tempo real 1610 e os dados marcados excluídos 1740 são movidos para o próximo registro após a primeira iteração do percurso.
[000379] Ao atingir o último elemento de dados em todas as três fontes de elementos de dados, o Método 2500 termina e os dados de teste 1620 são obtidos. A Tabela fundida 2560 indica os elementos de dados mais baixos identificados em cada iteração da Etapa 2 discutida anteriormente. Somente as fontes que tiveram o elemento de dados mais baixo são exibidas preenchidas e as demais são deixadas em branco. Por exemplo, na primeira iteração da Etapa 2, os Elementos de dados mais baixos 2520 e 2530 têm o mesmo conteúdo como parte de suas respectivas fontes de dados em tempo real 1610 e dados marcados excluídos 1740 e dados marcados excluídos 1740 são deixadas em branco, indicando que não possui o elemento de dados mais baixo. Da mesma forma, na última iteração, apenas os dados marcados inseridos
1730 têm o elemento de dados mais baixo 2550 indicado na última linha da Tabela fundida 2560.
[000380] A FIG. 26 representa um fluxograma mostrando as etapas de um Método 2600 para editar um banco de dados durante a visualização do site, de acordo com algumas modalidades da presente divulgação. O Método 2600 pode ser praticado nos ambientes de sistema descritos ao longo desta divulgação, como os das FIGS. 1, 2, 15 e outras.
[000381] Como mostrado na FIG. 26, a Etapa 2602 pode envolver o recebimento de um ou mais grupos de elementos de dados (por exemplo, de um usuário de um sistema de criação de sites). Os elementos de dados, conforme discutido anteriormente, podem incluir uma variedade de tipos diferentes de conteúdo, ou registros de conteúdo, que podem ser integrados a um site, como texto, imagens, vídeos, anúncios, exibições de saída de banco de dados etc. Em algumas modalidades, os elementos de dados podem incluir ainda um conjunto de objetos de dados (por exemplo, duas instâncias de texto e uma imagem). Cada grupo pode ter um ou mais elementos de dados. Um grupo pode assim definir um conjunto relacionado de um ou mais elementos. Por exemplo, um primeiro site ou página (por exemplo, um identificador da página da web) pode ser associado a um grupo que compreende apenas texto, um segundo site ou página pode ser associado a um grupo que compreende elementos de dados (cada um dos quais compreendendo um texto e três imagens), um terceiro site ou página pode ser associado a um grupo composto por elementos de dados que compreendem texto e vídeo etc. Por meio de uma interface de edição de site, conforme discutido anteriormente, o usuário pode identificar em quais grupos de elementos de dados devem aparecer ou ser associados a páginas da web individuais de um site ou a determinados modelos de página virtual.
[000382] Os grupos de dados podem, em algumas modalidades, ser entidades no nível do site que podem ser usadas e reutilizadas em várias páginas de um site, ou podem ser entidades no nível do proprietário que podem ser usadas e reutilizadas por um proprietário de site específico. Além disso, os grupos de dados também podem ser entidades no nível do sistema (por exemplo, um banco de dados de códigos postais, descrições de áreas geográficas etc.) ou entidades no nível da página.
[000383] O método 2600 também pode incluir uma Etapa 2604 de armazenamento dos grupos de um ou mais elementos de dados em um Banco de dados de área de site 124, consistente com as modalidades anteriores. Exemplos de tais bancos de dados são descritos anteriormente (por exemplo, em conjunto com as FIGS. 1, 2, 15 e outras). Os bancos de dados podem ser configurados para manter cada grupo, manter associações entre os grupos e sites ou páginas ou modelos de páginas virtuais e armazenar outros conteúdos e informações. Conforme discutido mais a seguir, quando um usuário faz edições em uma página da web virtual durante um modo de visualização, essas edições podem ser convertidas em edições no banco de dados em tempo real, mantendo assim um banco de dados atualizado para cada página da web.
[000384] Além disso, o Método 2600 pode incluir uma Etapa 2606 de gerar uma ou mais páginas da web virtuais. Cada uma das páginas da web virtuais pode representar um elemento de dados (que consiste em um ou mais objetos) que pode ser exibido no modo de visualização (durante o desenvolvimento) antes que o site real seja lançado ou que suas partes atualizadas sejam ativadas (ou seja, se tornem visíveis pela Internet para outros usuários). Para publicar subsequentemente uma coleção virtual de páginas da web no modo ativo, o usuário pode selecionar uma opção intitulada “Publish”, “Post” ou algo semelhante, que tornará o site visível em toda Internet (como a publicação geralmente é feita no nível do site e não para uma única página). Depois de publicadas, as páginas virtuais (ou seja, instâncias derivadas do Modelo de página da web 2704) podem se comportar de maneira semelhante às páginas comuns (reais), embora sejam geradas dinamicamente. Em algumas modalidades, cada uma das páginas da web reais não é projetada com funcionalidade para atualizar o banco de dados, enquanto as páginas da web virtuais podem ser projetadas com essa funcionalidade. Como exemplo, um site de aluguel de hotéis pode manter cinco modelos de páginas virtuais diferentes para cinco tipos diferentes de quartos disponíveis em um hotel específico (como cama de solteiro, cama de casal etc.). Cada um dos modelos de página virtual pode ser associado ao seu próprio grupo de elementos de dados (ou seja, registros para salas do tipo especificado) e cada sala teria uma página da web virtual que pode ser exibida e editável durante um modo de visualização como uma web virtual página.
[000385] Além disso, o Método 2600 pode incluir uma Etapa 2608 de exibir cada grupo de pelo menos um elemento de dados em um conjunto separado de conjuntos de páginas virtuais. Por exemplo, na hipótese anterior de um site de hotel, durante o modo de visualização, cada um dos cinco modelos de páginas da web virtuais correspondentes a diferentes tipos de quartos de hotel pode ter seus grupos de elementos de dados associados (por exemplo, texto diferente que descreve os quartos, imagens dos quartos, vídeos dos quartos etc.). Os conjuntos de páginas virtuais gerados (ou seja, instâncias) podem ser exibidos ao usuário por meio de um navegador ou outro cliente, conforme discutido anteriormente em conjunto com outras técnicas.
[000386] O método 2600 também pode incluir uma Etapa 2610, que envolve a exibição de uma ferramenta de edição para permitir que um usuário edite um ou mais modelos e instâncias de páginas da web virtuais. Os modelos podem ser editados como se fossem páginas regulares. As instâncias podem ser editáveis apenas no modo de visualização, pois podem não estar visíveis como parte do processo regular de navegação e edição da página do editor. Em uma modalidade alternativa, o sistema pode permitir a edição de instâncias como parte do processo regular de edição do site. Uma variedade de ferramentas de edição pode ser usada, incluindo réguas e grades (por exemplo, para alinhar elementos de dados), seletores de arrastar e soltar (por exemplo, para mover elementos de dados com um cursor), inserção e edição de hiperlinks, integração de widgets ou aplicativos (por exemplo, de uma loja de aplicativos), inserção e edição de botões, criação e edição de texto, inserção e edição de imagens, inserção e edição de vídeos, criação e edição de apresentações de slides, funcionalidade de passar o cursor, estilos de plano de fundo, repetidores (por exemplo, que criam várias versões de um determinado elemento ou grupo de dados), roteadores baseados em software (por exemplo, que criam uma versão diferente de uma página da web com base em um elemento da URL usada para acessá-la) e muito mais. O sistema pode exibir (e operar) subconjunto diferente das ferramentas de edição disponíveis para modelos e instâncias e também pode personalizar o subconjunto da ferramenta de edição exibido, dependendo do usuário, modelo de página virtual, instância específica, grupo de dados ou elemento subjacente etc. Conforme discutido mais a seguir, um usuário pode fazer edições nos modelos e instâncias de páginas da web virtuais por meio das ferramentas de edição e as edições podem ser traduzidas em edições no banco de dados, mantendo informações e/ou conteúdo do componente para as páginas da web.
[000387] O Método 2600 também pode incluir uma Etapa 2612 de associação de um URL exclusivo a cada página da web virtual. Por exemplo, um site pode ter um nome de domínio (por exemplo, wix.com) e cada página no site pode ter um sufixo diferente (por exemplo, wix.com/page1, wix.com/page2, wix.com/page3 etc.). Além disso, em alguns casos, os URLs associados a páginas da web virtuais podem ter caminhos diferentes (referindo-se a arquivos ou diretórios) ou valores de parâmetros. Em algumas modalidades, um roteador baseado em software pode ser configurado para o site ou para páginas da web individuais. O roteador baseado em software pode ser configurável, por exemplo, para associar prefixos, caminhos, segmentos ou parâmetros de URL específicos a páginas da web específicas. Cada uma das páginas da web pode ser configurada para extrair dados diferentes do banco de dados que armazena elementos de dados. Em uma implementação JavaScript, por exemplo, uma solicitação de entrada para uma página da web pode ser associada a um objeto que inclui informações sobre a solicitação (por exemplo, o URL, de onde veio, de quem veio etc.). O roteador baseado em software pode processar essas informações e decidir qual página da web (possivelmente virtual) a ser exibida e quais elementos de dados incluir nela.
[000388] Além disso, o Método 2600 pode incluir uma Etapa 2614 de exibição de um recurso selecionável pelo usuário (por exemplo, botões, barras de rolagem, links etc.), permitindo que o usuário navegue pelas páginas da web virtuais para exibir individual e dinamicamente cada uma das páginas da web virtuais. No exemplo anterior, portanto, o recurso selecionável pelo usuário pode permitir que o usuário visualize cada um dos cinco conjuntos de páginas da web correspondentes a diferentes tipos de quartos de hotel. Cada página pode ser selecionada dinamicamente e visualizada como uma página da web virtual.
[000389] O Método 2600 pode incluir ainda uma Etapa 2616 de recebimento de edições em um ou mais atributos de página da web virtual de um usuário. Por exemplo, usando a ferramenta de edição descrita anteriormente, um usuário pode alterar o plano de fundo de uma página, o layout ou modelo de uma página, os aplicativos ou widgets integrados a uma página, os prefixos ou sufixos de URL associados a uma página, a funcionalidade do repetidor em uma página, funcionalidade de roteador baseada em software para uma página ou executar vários outros tipos de edições. As alterações feitas no modelo de página da web 2704 podem ser gravadas diretamente na definição da página de modelo no Banco de dados da área de site 124. As alterações feitas nas instâncias da página virtual podem ser armazenadas em um banco de dados separado, que deve conter adaptações às instâncias da página virtual. Sob esse esquema, as adaptações devem ser indexadas com um índice exclusivo da instância específica da página virtual (por exemplo, em nosso exemplo de hotel, “Quarto de solteiro # 1234”). A adaptação seria recuperada e reaplicada sempre que essa instância da página virtual for gerada para exibição (por exemplo, durante a visualização ou durante a exibição em tempo real).
[000390] Em algumas modalidades, os usuários têm permissão para editar instâncias de páginas virtuais, mas apenas em termos de suas informações de campo (por exemplo, texto, gráficos, vídeos etc.). Por exemplo, em tais modalidades, os usuários podem ser proibidos de editar outros elementos (ou seja, que não sejam conteúdo) de uma instância de página virtual, incluindo layout, atributos etc.
[000391] O método 2600 também pode incluir uma Etapa 2618 de recebimento de edições nos próprios elementos de dados. Tais edições podem ser feitas diretamente em uma exibição do grupo de dados (isto é, elementos de interface do usuário de exibição que permitem navegar e editar os grupos e elementos de dados subjacentes). Alternativamente, essa edição pode ser realizada através da edição do conteúdo do campo nas instâncias de página virtual, geradas relacionadas aos itens. O sistema pode ativar essa edição adicionando (no modo de visualização) controles adicionais de edição às instâncias de página virtual exibidas (como um botão “select alternative picture” adicionado a cada imagem exibida originária de um grupo de dados). Como discutido anteriormente, os elementos de dados podem ser armazenados em um banco de dados. As edições podem incluir edição de texto, substituição ou modificação de imagens, substituição ou modificação de vídeos, alteração da funcionalidade de passar o cursor sobre um elemento e vários outros tipos de edições.
[000392] Além disso, o Método 2600 pode incluir uma Etapa 2620 de recebimento de edições no código associado a uma ou mais páginas da web virtuais. Exemplos do código podem ser o código de front-end e o código de back-end descritos anteriormente em conjunto com as FIGs. 1 a 7. Por exemplo, o código pode estar relacionado à coleta e armazenamento de dados e conteúdo em um banco de dados, criação de páginas dinâmicas, implementação de widgets e aplicativos voltados para o usuário, repetição de layouts de elementos de dados, configuração de roteadores baseados em software e muito mais. Em algumas modalidades, na Etapa 2622, os segmentos de código esqueleto podem ser gerados para facilitar edições do usuário no código associado às páginas da web. Por exemplo, o código do esqueleto pode ser abstrações de alto nível de funções associadas a um código de fonte mais granular, que pode implementar os vários tipos de funcionalidade de front-end e de back-end descritos anteriormente para páginas da web. O código do esqueleto pode ser exibido aos usuários por meio da interface de edição e os usuários podem fazer edições nele. As edições do usuário no código do esqueleto podem ser convertidas em edições no código real mais granular associado às páginas da web individuais. Quanto às edições no atributo da página e no conteúdo dos dados/campo da página observados anteriormente, o sistema pode suportar edições no Modelo de página da web 2704 (que são armazenados no Banco de dados da área do site 124, possivelmente sujeitos a sandboxing de alterações de desenvolvimento antes da publicação) ou às instâncias de página virtual (que podem ser armazenadas no banco de dados de adaptações de instância de página virtual). Isso está detalhado na descrição das etapas 2630 e 2634 a seguir.
[000393] No Método 2600, uma Etapa 2624 pode permitir que um usuário selecione páginas da web virtuais específicas e uma Etapa 2626 pode permitir que um usuário navegue pelas páginas da web virtuais. Por exemplo, os usuários podem selecionar páginas individualmente clicando em hiperlinks ou outros links associados a imagens ou representações visuais das páginas, ou podem navegar pelas páginas visualmente (por exemplo, por um botão de alternância para a esquerda/direita ou para cima/para baixo ou por outra seleção visualizações).
[000394] De acordo com o método 2600, quaisquer edições em páginas da web virtuais (por exemplo, editar instâncias através das etapas 2616 ou 2618) podem ser convertidas em atualizações no banco de dados, mantendo os elementos de dados para as páginas da web na etapa 2828. Por exemplo, se um usuário substituir uma imagem em uma página da web virtual por outra imagem (por exemplo, imagem carregada pelo usuário etc.), a nova imagem poderá ser armazenada no banco de dados. Além disso, se o usuário substituir o texto na página virtual (por exemplo, a descrição de um quarto de hotel específico), o texto atualizado também poderá ser armazenado no banco de dados. Em algumas modalidades, as atualizações no banco de dados podem ser realizadas automaticamente com base nas edições do usuário na página da web virtual. Como o banco de dados é usado para criar as páginas da web virtuais e está associado ao conteúdo das páginas da web virtuais, as edições nas páginas da web virtuais podem ser associadas ao banco de dados usado para construí-las. Em algumas modalidades, várias versões do banco de dados são armazenadas, pelo menos temporariamente, para que os usuários possam executar operações de desfazer ou reverter, se quiserem negar uma alteração em uma página da web virtual que fizeram e retornar a uma versão anterior. Por exemplo, os usuários podem selecionar uma opção de desfazer ou reverter, ou podem receber carimbos de data/hora ou identificadores de versão associados a versões anteriores de uma página da web virtual para a qual podem retornar e retomar sua edição. Esse sistema de versão também pode suportar a alteração da versão do banco de dados de desenvolvimento que não faz parte da versão publicada até que uma operação de publicação seja executada. Isso também é conhecido como “sandboxing” do banco de dados de desenvolvimento.
[000395] O Método 2600 também pode incluir uma Etapa 2630, na qual são recebidas quaisquer edições no código do esqueleto feitas pelo usuário. Adicionalmente, na Etapa 2634, quaisquer edições no código real (por exemplo, através da Etapa 2620) ou no código de esqueleto (por exemplo, na Etapa 2630) podem ser traduzidas em edições no código real da página da web. Como descrito anteriormente, por exemplo, os usuários podem fazer edições no código real ou esqueleto associado a várias funcionalidades de back-end ou de front-end de páginas da web virtuais. Tais edições no código podem ser armazenadas no mesmo banco de dados que hospeda os elementos de dados para uma página da web virtual ou um banco de dados de código separado.
[000396] Além disso, em uma Etapa 2632, o Método 2600 pode incluir a ativação, durante uma exibição em tempo real de uma página da web real associada a uma página da web virtual, uma exibição das páginas da web com as atualizações feitas na página da web virtual durante o modo de visualização, incluindo páginas da web regulares e instâncias de páginas virtuais. Como discutido anteriormente, por exemplo, os usuários podem editar vários recursos de uma página da web virtual durante o modo de visualização (por exemplo, estrutura da página, elementos de dados, código de front-end, código de back-end etc.) para modelos e instâncias. Essas edições podem ser traduzidas em atualizações correspondentes às definições de página ou alterações nos elementos de dados, que podem ser armazenadas no Banco de dados da área de site 124 e/ou em bancos de dados separados (por exemplo, um banco de dados de elementos de dados, um banco de dados de adaptação de instância e/ou um separar banco de dados de código no qual a página virtual se baseia). Esses bancos de dados separados também podem ser hospedados pelo WBS 100, por exemplo, como parte da Memória 820 ou Armazenamento persistente 830. Adicionalmente, essas edições também podem ser traduzidas em atualizações correspondentes para a página da web ativas. Em várias modalidades, as páginas da web virtuais e as páginas da web reais podem ser baseadas no mesmo banco de dados ou em diferentes bancos de dados (por exemplo, vinculados). Deve-se observar que esses bancos de dados
(por exemplo, Banco de dados de área de site 124 e outros bancos de dados, como banco de dados de elementos de dados, banco de dados de adaptação de instância ou banco de dados de código de front-end/back- end separado) podem ser implementados como um único banco de dados, um conjunto de bancos de dados, ou uma combinação de bancos de dados (cada um dos quais pode suportar um subconjunto das funções necessárias).
[000397] A FIG. 27 é um sistema 2700 para o desenvolvimento e visualização de páginas da web, de acordo com algumas modalidades da presente divulgação. Como discutido anteriormente, o sistema 2700 pode ser semelhante ou operar dentro dos sistemas discutidos em conjunto com as FIGS. 1, 2, 15 e outras. Em algumas modalidades, o sistema 2700 pode incluir um Banco de dados de área de site 124, que armazena elementos de dados e/ou código para uma ou mais páginas da web 2704. Como mostrado, várias páginas da web 2704 podem ser mantidas, cada uma das quais pode ter seus próprios elementos de dados correspondentes. Como discutido anteriormente, os elementos de dados podem ser organizados no Grupo de dados 210 de um ou mais elementos de dados. Como observado anteriormente, esse grupo de dados 2710 pode ser de todo o sistema, específico de grupo de sites, específico de site ou específico de página (normalmente para um determinado Modelo de página da web 2704).
[000398] Como mostrado na FIG. 27, o Banco de dados de área de site 124 pode se comunicar através de uma rede com um Navegador da web 131 ou outro aplicativo do cliente, que pode ser operado por um usuário. O Navegador da web 131 pode exibir uma Página da web virtual 2712 correspondente a cada Modelo de página da web 2704 no Banco de dados da área de site 124 usando elementos de dados no Grupo de dados 210. Adicionalmente, cada página da web virtual 2712 pode ser associada a um Elemento de dados 211. Adicionalmente, os usuários podem ter uma exibição de elementos de dados individualmente (por exemplo, Elemento de dados 1 211 e Elemento de dados 2 2718) como parte do grupo de elementos de dados 2714. Como discutido anteriormente, os usuários podem interagir com a página virtual exibida 2712, incluindo seus elementos 2710, 2714, 211, 2718, para editar os vários recursos da página virtual 2712. As edições podem envolver elementos de dados específicos, recursos da estrutura da página, código de front-end, código de back-end e muito mais. Como discutido anteriormente, essas edições podem ser recebidas pelo Banco de dados da área do site 124 e/ou outros bancos de dados.
[000399] A FIG. 28 é um diagrama de blocos 2800 de uma página da web virtual, de acordo com algumas modalidades da presente divulgação. Consistente com os exemplos anteriores, a página virtual 2712 da web pode incluir vários Recursos selecionáveis pelo usuário 2802, incluindo um recurso de exibição 2804, elemento de pesquisa 2806, indicadores 2810, recurso de rolagem 2810 e outros recursos. A página da web virtual 2712 pode ainda incluir elementos de dados 2714 e código de front-end 2812, conforme discutido anteriormente. Além disso, a página da web virtual 2712 pode estar associada ao código de back-end (não mostrado), como o código da página da web dinâmica. Os usuários podem visualizar, interagir e fazer edições na página virtual 2712, conforme discutido anteriormente. Essas edições podem ser recebidas por um ou mais componentes do sistema de criação de sites, como o Banco de dados da área do site 124. Através da exibição da página virtual 2712, os usuários podem visualizar as edições que estão fazendo antes que uma página correspondente seja publicada. Para publicar a página virtual 2712 no modo ativo, um usuário pode selecionar um link “publish” ou “render”, conforme discutido anteriormente.
[000400] A FIG. 29 é uma exibição de linha do tempo 2900 de atualização dinâmica de páginas da web, de acordo com algumas modalidades da presente divulgação. Em particular, quando um usuário faz edições em uma página da web virtual 2712, as edições podem ser atualizadas no Banco de dados da área do site 124 e,
portanto, também no navegador do usuário. Como mostrado na FIG. 29, o grupo de dados 2710 pode incluir o Elemento de dados 1 211 e o Elemento de dados 2 2718, entre outros elementos de dados. Dentro do Elemento de dados 1 211, uma Aba 1 2902 pode ser exibida e dentro do Elemento de dados 2 2718, uma Aba de teste 2 2904 pode ser exibida. A Aba 1 2902 e a Aba de teste 2 2904 podem ser exibidas na página virtual 2712, como mostrado, junto com outros elementos (por exemplo, uma barra de pesquisa, menu suspenso etc.).
[000401] À medida que o tempo avança na exibição da linha do tempo 2900, o usuário pode fazer edições na página virtual 2712. Por exemplo, como mostrado, o usuário pode fazer edições na Aba de teste 2 2904, resultando na Aba editada 2. Além disso, um novo Elemento de dados 3 2906 pode ser adicionado à página virtual 2712, como parte do grupo de dados 2710. À medida que as edições na página virtual 2712 são feitas, as edições correspondentes podem ser feitas no Ambiente ativo 2908. Por exemplo, após o usuário selecionar uma função “publish” ou “render”, o Ambiente ativo 2908 pode ser atualizado para exibir as atualizações do grupo de dados 2710 e outros aspectos da página virtual 2712. Por exemplo, uma primeira versão da página da web real 2910 pode não incluir a Aba editada 2 ou a Aba 3, enquanto a versão subsequente da página da web real 2912 pode incluir essas atualizações. Em várias modalidades, as atualizações na página virtual 2712 podem ser feitas automaticamente ou mediante o usuário selecionar uma função de renovar ou atualizar. Além disso, as atualizações das páginas reais da web 2910 e 2912 no Ambiente ativo 2908 podem ser feitas com o usuário confirmando uma transição para o Ambiente ativo 2908 (por exemplo, selecionando um link “publish” ou “render”).
[000402] A FIG. 30 representa um diagrama de blocos de um Sistema de visualização dinâmica 3000, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 30, o Sistema de visualização dinâmico 3000 ajuda a exibir páginas da web como elas apareceriam, por exemplo, no Ambiente de implantação
1510. A Interface de visualização 3010 pode ser um quadro ou outra interface gráfica dentro da Interface do editor online 243 exibindo uma página da web. Em algumas modalidades, a Interface de visualização 3010 pode ser uma aba separada aberta no navegador da web sendo usada para mostrar a Interface do editor online 243.
[000403] A Interface de visualização 3010 pode ser usada para exibir páginas da web estáticas e páginas da web virtuais (ou seja, instâncias de um determinado modelo de página da web 2704). As páginas da web virtuais geradas para visualização na Interface de visualização 3010 podem ser acompanhadas por uma Interface de navegação 242. A Interface de visualização 3010 pode permitir que a Interface de navegação 242 inclua recursos de rolagem para permitir que os usuários rolem através de várias páginas da web virtuais geradas para exibição na Interface de visualização 3010. A Interface de navegação 242 pode permitir a navegação sequencial e o acesso direto a páginas da web virtuais específicas, bem como a navegação entre páginas virtuais por meio de pesquisa (por exemplo, usando valores do item de dados chave usado para identificar páginas virtuais específicas). A Interface de navegação 242 pode ter acesso direto a páginas da web virtuais específicas e pode suportar páginas da web virtuais marcadas para navegar seletivamente. Por exemplo, as páginas da web virtuais exibidas na Interface de visualização 3010 podem ser acompanhadas de links para a primeira, a última, a anterior ou a próxima página. O WBS 100 também pode suportar outros arranjos das páginas virtuais, não apenas lineares. Por exemplo, o WBS 100 pode suportar um arranjo hierárquico de páginas virtuais, que podem ser navegadas usando opções adicionais como “ir para o nível mais alto da árvore” ou “expandir o nível abaixo da página atual”.
[000404] A FIG. 31 ilustra uma visualização de uma Página da web virtual 3110 sendo editada, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 31, Fron-end 126 está associado ao Grupo de dados 210. As Ferramentas de construção 121 incluídas no front-end 126 podem ser associadas a elementos de dados específicos do Grupo de dados 210. A Página da web virtual 3110 pode exibir a Página da web indexável 125, incluindo o front-end 126 e pode ser visualizada na Interface de visualização 3010. Em algumas modalidades, a Interface de visualização 3010 pode ser um quadro ou outra representação gráfica dentro da Interface do editor online 243. A Interface de visualização 3010 pode permitir que a Página da web virtual 3110 seja visualizada como apareceria em diferentes dispositivos móveis e de desktop, usando idiomas diferentes, adaptados para requisitos de acessibilidade ou modificados para públicos específicos.
[000405] A FIG. 32 é um diagrama esquemático que descreve relações entre grupos de dados e sites, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 32, um grupo de Páginas da web virtuais 3220 de um site pode ser associado a um mesmo Grupo de dados 210. Em algumas modalidades, o grupo de Páginas da web virtuais 3220 pode ser associado a um conjunto de Grupos de dados 3230. Em algumas modalidades, um grupo de Sites 3240 pode compartilhar o mesmo conjunto de Grupos de dados 3230. Um grupo de Sites 3240 que compartilha o conjunto de Grupos de dados 3230 pode ter o mesmo proprietário ou operador ou pode receber permissões apropriadas (embora um mecanismo de controle de acesso) para acessar Grupos de dados específicos 210. Em algumas modalidades, um grupo de Sites 3240 que compartilha um conjunto de Grupos de dados 3230 pode ter sido construído pelo mesmo Programador/Designer 1540, como discutido anteriormente.
[000406] Como ilustrado na FIG. 32, um Repetidor 3213 é uma ferramenta de construção visível no front-end de uma página da web que exibe diferentes itens de conteúdo ou agrupamentos em seções diferentes com um design ou layout repetido. Em algumas modalidades, o Repetidor 3213 pode ser parte de uma Página virtual da web 3111 gerada usando um roteador baseado em software, conforme discutido aqui mais adiante ou parte de uma Página da web indexável regular (estática) 125. O Repetidor 3213 exibe um conteúdo diferente com base no Elemento de dados 1 211 e no Elemento de dados M 3212 do Grupo de dados 210. O repetidor pode ser associado diretamente a um subconjunto de Grupo de dados 3213 do Grupo de dados 210. Por exemplo, um repetidor pode ser usado para criar cinco agrupamentos diferentes de texto e imagens. Cada agrupamento pode posicionar automaticamente o texto e as imagens com as mesmas proporções e layout. No entanto, em algumas modalidades, o conteúdo real do texto e das imagens pode ser diferente em cada agrupamento.
[000407] A FIG. 33 é um diagrama esquemático que descreve os componentes envolvidos na geração de páginas da web virtuais, de acordo com algumas modalidades da divulgação atual. Como mostrado na FIG. 33, o Modelo de página da web 2704, semelhante às páginas da web indexáveis, pode estar associado ao Grupo de dados 210 e outros grupos de dados. Como discutido anteriormente, o Roteador baseado em software 3310 pode ser usado para ligar elementos de dados em um Grupo de dados 210 e pode ser aplicado ao Modelo de página da web 2704 para gerar Páginas da web virtuais 3111, 3313 e 3312. O Roteador baseado em software 3310 pode selecionar/filtrar/classificar elementos de dados no Grupo de dados 210 para aplicar ao Modelo de página da web 2704 e aos grupos de páginas da web virtuais com base na URL enviada por um usuário. O Roteador baseado em software 3310 identifica o Modelo de página da web 2704 com base em um prefixo de URL. O Roteador baseado em software 3310 pode identificar elementos de dados no Grupo de dados 210 a ser aplicado ao Modelo de página da web 2704 para gerar páginas da web virtuais com base em elementos de URL (por exemplo, componentes de sufixo, segmentos de texto ou valores de parâmetros) seguindo o prefixo da URL. Em algumas modalidades, o prefixo da URL “prefixo1” identifica o Roteador baseado em software 3310 para o Modelo de página da web 2704. O Roteador baseado em software 3310 pode gerar as Páginas da web virtuais 3111 e 3312 com base no valor do sufixo “marca1” e “marca2”, respectivamente. O Roteador baseado em software 3310 pode gerar um mapa do site do Mapa do site com prefixo 1 3313 listando possíveis URLs de todas as páginas da web virtuais que podem ser geradas usando o Modelo de página da web 2704 e o Grupo de dados 210 associado, bem como outros grupos de dados. O Mapa do site com prefixo 1 3313 pode ajudar na indexação das páginas da web virtuais 3111 e 3312 pelo Mecanismo de pesquisa 170.
[000408] A FIG. 34 é o fluxograma 3400 que mostra as etapas envolvidas na geração e visualização de páginas da web virtuais, de acordo com algumas modalidades da presente divulgação. O fluxograma 3400 representa as etapas que podem ser executadas nas modalidades do sistema descritas anteriormente.
[000409] Como mostrado na FIG. 34, na etapa 3410, um Sistema de visualização dinâmica 3000 pode armazenar elementos de dados no Banco de dados da área de site 124. Conforme discutido anteriormente, os elementos de dados podem assumir uma variedade de formas diferentes, como texto, imagens, vídeos, planos de fundo e registros que consistem em uma combinação de qualquer um desses tipos de objetos.
[000410] Na etapa 3420, o Sistema de visualização dinâmica 3000 pode armazenar instruções que permitem a organização dos elementos de dados armazenados em grupos de dados. Por exemplo, os grupos podem ser definidos em bancos de dados. Além disso, os grupos podem ser definidos pelos relacionamentos entre os elementos do grupo ou pelos campos nos elementos de dados cujos valores dependem de outros campos. Consistente com as modalidades anteriores, os grupos de dados podem ser definidos antes que quaisquer elementos visuais, campos ou páginas da web específicas sejam definidos.
[000411] Na etapa 3430, o Sistema de visualização dinâmica 3000 pode fornecer mais instruções ao navegador da web que exibe a Interface do editor online 243 para permitir a adição de elementos de dados adicionais a grupos de dados criados anteriormente no Banco de dados da área de site 124. Dessa maneira, os grupos existentes podem ser suplementados ou editados para conter elementos diferentes ou adicionais. Um usuário pode repetir a Etapa 3420 e pode voltar a qualquer momento para adicionar mais elementos de dados. Da mesma forma, esta etapa pode incluir instruções para executar operações adicionais nos elementos de dados, como exclusão e atualização. Por exemplo, um usuário pode alternar entre as Etapas 3410, 3420 e 3430 ou prosseguir para a Etapa 3430.
[000412] Na etapa 3440, o Sistema de visualização dinâmica 3000 pode executar instruções para ajudar na associação de elementos de dados inseridos anteriormente de grupos de dados armazenados no Banco de dados da área do site 124 ao site sendo editado na Interface do editor online 243. Um usuário pode repetir a Etapa 3420 e pode voltar a qualquer momento para criar ainda mais associações entre as páginas da web do site que está sendo construído e os elementos de dados organizados como grupos de dados armazenados no Banco de dados da área do site 124.
[000413] Na Etapa 3450, o Sistema de visualização dinâmica 3000 fornece instruções para ajudar a associar grupos de elementos de dados às páginas da web de um site. Isso pode envolver, como discutido anteriormente, vincular campos em um formulário entre si para ativar/desativar e filtrar os valores potenciais permitidos para um campo (por exemplo, um formulário para preencher o endereço pode ser listado nos valores dos campos da cidade, dependendo da seleção no campo de estado).
[000414] Na Etapa 3460, o Sistema de visualização dinâmica 3000 fornece instruções para a Interface do editor online 3000 para permitir a visualização de páginas da web de um site que está sendo construído na Interface do editor online 243. As visualizações podem permitir a edição do usuário em tempo real, conforme discutido anteriormente.
[000415] Um usuário pode repetir as etapas 3430, 3440, 3450, 3460 qualquer número de vezes e repeti-las em qualquer ordem.
[000416] A FIG. 35 é um diagrama esquemático de usuários que interagem com o Sistema de hospedagem de sites 3500, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 35, o Sistema de hospedagem do site 3500 inclui o Servidor de hospedagem 3510, que inclui um ou mais sistemas para criar e visualizar sites, o Servidor de plug-in 3520 executando o código do plug-in, o Processador 260, a Memória 820 armazenando os componentes e o código do plug-in, uma Interface 3570 para desenvolver e fazer o upload do código do plug-in e outros componentes.
[000417] O Servidor de hospedagem 3510 pode ser um ou mais servidores que hospedam sites co-hospedados 3511, 3512 e 3513. O Servidor de hospedagem 3510 pode ser uma instância de execução de servidor da web no On-Demand System 800, por exemplo ou em outro tipo de sistema de hospedagem de sites. Em algumas modalidades, o Servidor de hospedagem 3510 pode ser várias instâncias de execução de servidor da web no On-Demand System 800. O Servidor de hospedagem 3510 também pode ser o WBS 100, que armazena sites editados e acessados pelo Programador/Designer 1540 e pelo Usuário final 1530, conforme discutido anteriormente.
[000418] As Ferramentas de edição 411, conforme discutido anteriormente, são ferramentas comuns para editar um site compartilhado por sites hospedados pelo Servidor de hospedagem 3510. Em algumas modalidades, as Ferramentas de edição 411 podem ser compartilhadas entre vários Servidores de hospedagem 3510 que hospedam sites co-hospedados 3511-3513.
[000419] O Servidor de plug-in 3520 pode ser um ou mais servidores executando o código de plug-in em um Ambiente de isolamento 3521. Em algumas modalidades, o Servidor de plug-in 3520 usa a mesma infraestrutura que o Servidor de hospedagem 3510 (que pode ser servidores físicos ou instância de execução de servidor da web, conforme observado anteriormente). O plug-in 3530 está presente na memória 820 e pode ser visualizado ou acessível por meio da interface do usuário 3531, código de plug-in de front-end 3532 e código de plug- in de back-end 3533.
[000420] Os Usuários 3540-3560 podem acessar as Ferramentas de edição 411 do Servidor de hospedagem 3510 para editar os Sites 3511- 3513, respectivamente. Em algumas modalidades, por exemplo, o Site 3511 sendo editado pelo Usuário 3540 pode incluir um Plug-in 3530. Por exemplo, o Site 3511 pode reproduzir vídeo por meio de um plug-in de reprodutor de vídeo 3530 quando o Site 3511 é acessado usando o Navegador da web 131 no Dispositivo de visualização da web 130. O site 3511 que altera o usuário 3540 pode incluir a edição e o upload do código do plug-in via Interface 3570. Em algumas modalidades, a Interface 3570 pode fazer parte das Ferramentas de edição 411.
[000421] Os Usuários 3540-3560 interagem com os Sites 3511-13 no Servidor de hospedagem 3510 por meio da plataforma compartilhada
3580. A Plataforma compartilhada 3580 permite que grupos de usuários editem grupos de sites. A Plataforma compartilhada 3580 pode ser um software configurado para determinar quais grupos de Usuários 3540-3560 têm acesso para editar quais Sites 3511-13. Em algumas modalidades, o Servidor de hospedagem 3510 que hospeda vários Sites 3511-13 pode agir como uma Plataforma compartilhada 3580.
[000422] O Site de visualização 3511 do usuário final 1530 usando o Navegador da web 131 no Dispositivo de visualização da web 130 pode incluir a Interface do usuário 3531 do plug-in 3530. Por exemplo, o Plug-in 3530 pode ser um reprodutor de vídeo e a Interface do usuário 3531 pode incluir botões de controle de reprodução estilizados para o Plug-in do reprodutor de vídeo 3530. O código de plug-in de front-end 3532 também pode ser transmitido pela Interface do usuário 3531 quando o Usuário final 3540 acessa um site. O Usuário final 1530 interagindo com a Interface do usuário 3531 do Plug-in 3530 pode resultar no Código do plug-in de front-end 3532 do Plug-in 3530 em execução no Navegador da web 131. Em algumas modalidades, a interação do Usuário final 1530 com o Site 3511 também pode resultar na execução do Código de plug-in de back-end 3533 no plug-in 3520. Por exemplo, o usuário final 3540 ao clicar nos controles de reprodução de um plug-in de reprodutor de vídeo pode resultar na execução e solicitação de um Código de plug-in de front-end 3532, e o Código de plug-in de back-end 3533 adicional pode compactar o vídeo com base na disponibilidade de largura de banda da rede.
[000423] FIG. 36 representa uma técnica de acesso controlado a sites co-hospedados, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 36, os Usuários 3540, 3550 são agrupados e têm acesso permitido aos Sites 3511 e 3512 co-hospedados
1. Os Usuários 3621 e 3622 podem ter acesso aos sites 3611 e 3612 co- hospedados 2. Os usuários podem acessar um ou mais sites Co- hospedados, mas não têm permissão para acessar sites que não fazem parte do grupo permitido. Os usuários podem ter seus direitos de acesso definidos, por exemplo, com base em se são proprietários de sites específicos, são usuários registrados, foram autenticados etc.
[000424] FIG. 37 representa grupos de sites co-hospedados compartilhando código de plug-in em rotas comuns, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 37, o Sistema de hospedagem da web 3500 possui dois conjuntos de sites co-hospedados, cada um deles diferindo do outro por uma rota de URL. Por exemplo, os Sites 3711 co-hospedados na Rota comum 1 podem compartilhar o domínio www.a.com e os Sites co-hospedados 3731 na Rota comum 2 podem compartilhar o domínio www.b.com. Alternativamente, os Sites co-hospedados 3711 na Rota 1 comum podem ter um subdomínio comum a.wixsite.com e os Sites co- hospedados 3731 na Rota Comum 2 podem ter um subdomínio comum b.wixsite.com. Os sites com rotas comuns podem ser co-hospedados em um servidor ou ambiente de hospedagem para criar um ambiente de isolamento e eliminar a interação com outros conjuntos de sites co- hospedados. Os sites co-hospedados também podem ter servidores de plug-ins diferentes para criar ambientes isolados para a execução do código do plug-in. Os Sites co-hospedados 3711 da rota 1 comum e os Sites co-hospedados 3731 da rota 2 comum ainda podem compartilhar o mesmo Processador 260 e Memória 820 ou ter processadores e memória diferentes. FIG. 38 representa ambientes de execução isolados do Código de plug-in de back-end 3533, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 38, Código de plug-in de back-end 3533 do Ambiente de isolamento do plug-in 3530 pode ser baseado em um contêiner (por exemplo, Docker) 3810 ou em uma Máquina virtual 3820 ou em um Processo do sistema operacional 3830. Em algumas modalidades, o Ambiente de isolamento 3521 pode incluir um ou mais Contêiner 3810, Máquina virtual 3820 e Processo do sistema operacional 3830 (por exemplo, código sem servidor), cada um executando o Código de back-end de plug-in 3533 separado. Em algumas modalidades, um Plug-in de hospedagem do servidor de plug-in 3530 pode incluir vários ambientes de isolamento.
[000425] A FIG. 39 representa um acesso controlado e a execução do Código de plug-in de front-end, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 39, acessar o Site 3511 pode resultar no acesso ao Código 3532 do plug-in 1 de front-end do Plug-in 3530 e no Código 3931 do plug-in 2 de front-end de outro plug- in. O Site 3511 pode garantir a execução de cada um dos plug-ins em Sub-regiões 3910 e 3930 separadas, respectivamente. O Sistema de hospedagem do site 3500 também pode criar um canal de comunicação seguro (por exemplo, SSL, túnel seguro etc.) para permitir que apenas determinadas outras sub-regiões do site sejam acessíveis. O canal de comunicação seguro pode restringir o acesso de um plug-in de front-end a outras sub-regiões do site. Por exemplo, o Código 3532 do Plug-in de front-end 1 em execução na sub-região 3910 pode se comunicar com outra sub-região 3920, mas pode ser negado o acesso à sub-região
3940. As sub-regiões acessíveis de um plug-in podem ser listadas em forma de tabela, em um registro confiável, em um arquivo de configuração ou em um banco de dados seguro. Por exemplo, em um arranjo baseado em computação em nuvem, uma plataforma de orquestrador de nuvem pode manter uma lista ou mapeamento de recursos de computação virtual (por exemplo, sub-região 3910, sub- região 3920, sub-região 3940 etc.) e pode definir seus permissões de conexão. Essa lista ou mapeamento pode permitir conexões ou ações específicas da sub-região 3910, sub-região 3920 e sub-região 3940 e negar outras conexões ou ações. Em algumas modalidades, o canal de comunicação seguro é fornecido permitindo que todas as comunicações passem por um ou mais canais (por exemplo, um canal que executa verificações de autenticação ou autorização). Tais canais podem ser, por exemplo, residentes em um cliente do sistema, em um servidor do sistema ou em ambos. A comunicação segura também pode ser estabelecida verificando o identificador exclusivo da sub-região de origem da comunicação. Por exemplo, uma chamada de método getId () pode ser usada para identificar a ID da sub-região de origem de uma mensagem de comunicação e determinar se está na lista ou no mapeamento permitido.
[000426] A FIG. 40 representa a execução isolada do lado do cliente do código do plug-in, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 40, o Site 3511 acessado usando o Navegador da web 131 por um Usuário final 1530 pode resultar no acesso ao Código de plug-in de front-end 3532 do Plug-in 3530. O acesso do Usuário final 1530 pode resultar na criação de um iframe para executar o Código de plug-in de front-end 3532 no isolamento. Em algumas modalidades, o Código de plug-in de front-end 3532 pode ser copiado para diferentes sub-regiões 3712-3713 do site 3511 para execução no isolamento. Por exemplo, o Site 3511 pode mostrar vários reprodutores de vídeo, cada um transmitindo fluxos de vídeo diferentes, mas usando o mesmo código de plug-in. Em algumas modalidades, o Código de plug-in 3532-3533 em execução em um Iframe pode não ter acesso aos cookies do lado do cliente (por exemplo, cookies HTTP).
[000427] A FIG. 41 é um fluxograma que mostra as etapas envolvidas no acesso e execução do código do site e do plug-in, de acordo com algumas modalidades da presente divulgação. Como mostrado na FIG. 41, na etapa 4110, o Sistema de hospedagem de site 3500 hospeda sites que compartilham um ou mais elementos de dados, modelos, partes de código, rotas ou outras funcionalidades comuns em um servidor ou conjunto de servidores hospedados comum. Os servidores também podem ser co-hospedados com base na propriedade ou privilégios administrativos e de edição para a pluralidade de usuários. Por exemplo, o Sistema de hospedagem de site 3500 pode hospedar sites criados e gerenciados por várias entidades ou indivíduos independentes e não afiliados.
[000428] Na Etapa 4120, o Sistema de hospedagem de site 3500 fornece acesso às Ferramentas de edição 411 para editar ainda mais os sites co-hospedados pelo sistema. Como discutido anteriormente, as Ferramentas de edição 411 podem permitir que o usuário edite vários aspectos dos sites.
[000429] Na etapa 4130, um esforço do usuário para acessar um site para fins de edição resulta no Sistema de hospedagem na web 3500, avaliando se o usuário que fez a solicitação tem acesso ou privilégios para editar o site. A avaliação pode depender da propriedade de um determinado site. Em algumas modalidades, o proprietário ou administrador de um site pode fornecer acesso de administrador e/ou editar a outros usuários usando as Ferramentas de edição 411. Além disso, em algumas modalidades, os direitos de edição podem depender se o usuário é um usuário registrado ou foi autenticado para acessar o Sistema de hospedagem da web 3500.
[000430] Se a resposta para a Etapa 4130 for não, o acesso solicitado ao site é negado e o usuário pode precisar solicitar privilégios de edição ao administrador do site. O processo 4100 é considerado completo em caso de falha no acesso à edição do site. Alternativamente, o processo 4100 pode voltar para a Etapa 4120 ou 4130.
[000431] Se a resposta para a Etapa 4130 for sim, o processo 4110 prossegue para a Etapa 4150. Na Etapa 4150, uma interface para fazer upload do plug-in é apresentada ao usuário solicitando acesso para editar um site. A interface pode ser semelhante às discutidas anteriormente para os usuários editarem código de front-end ou back- end .
[000432] Na etapa 4160, o Sistema de hospedagem de sites 3500 recebe as alterações do plug-in e as armazena. Um plug-in carregado pelo usuário pode, por exemplo, incluir edições no Código de plug-in de back-end 3533 do Plug-in 3530. Em algumas modalidades, as edições do usuário podem incluir edições no Código de plug-in front-end 3532 do Plugin 3530. Alternativamente, um usuário também pode editar a Interface do usuário 3531 do Plug-in 3530. Em algumas modalidades, um usuário pode editar toda a Interface do usuário 3531, Código de plug-in de front-end 3532 e Código de plug-in de back-end 3533.
[000433] Um código de plug-in de edição do usuário (por exemplo, Código de plug-in de front-end 3532 ou Código de plug-in de back-end 3533) pode editar o código do plug-in em várias sessões, resultando na repetição das etapas 4120 a 4160, bem como em poucas etapas adicionais.
[000434] Na etapa 4170, o Web Hosting System 3500 executa o plug- in 3530 quando o site 3511 é acessado por um usuário (por exemplo, usuário final 1530, 3540, 3550, 3560). A execução do código de plug-in inclui a criação de um Ambiente de isolamento 3521 para executar o código. O Ambiente de isolamento 3521 pode incluir isolamento no lado do cliente em um navegador da web e no lado do servidor para executar o Código de plug-in 3530 de front-end 3532 e de back-end 3533, respectivamente.
[000435] A FIG. 42 é um exemplo de interface de usuário para editar uma página da web e criar uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação. Por exemplo, a página da web pode ser gerada por meio de um sistema de desenvolvimento de sites, como o fornecido pelo WIX.COM. Como ilustrado, pode ser criado um banco de dados que suporta uma ou mais páginas dinâmicas da web.
[000436] A barra lateral da Estrutura do site 4202 pode incluir várias opções para editar e configurar o site, como uma lista de páginas diferentes (por exemplo, CASA, ACADÊMICA, EVENTOS, EXPOSIÇÕES, ÁREA DO ESTUDANTE, Cursos por graduação e NOTÍCIAS), bem como opções para Recursos públicos, funcionalidade de back-end e funcionalidade de banco de dados. Além disso, uma barra de ferramentas 4204 pode incluir várias opções para adicionar e editar conteúdo nas páginas da web.
[000437] Como ilustrado, a interface 4206 permite que um usuário configure um banco de dados. A interface 4206 pode ser gerada, por exemplo, se um usuário selecionar a opção “Banco de dados” na barra lateral da Estrutura do site 4202. O usuário pode personalizar o banco de dados, dando a ele um nome exclusivo no campo 4208. Neste exemplo, o banco de dados pode ser chamado de banco de dados de “cursos”.
[000438] FIG. 43 é um exemplo de interface de usuário para editar uma página da web e configurar permissões para uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação. Por exemplo, continuando com o exemplo anterior, um usuário que cria um banco de dados de “cursos” pode acessar várias opções diferentes de permissões 4310 para o banco de dados e as páginas dinâmicas correspondentes que podem ser baseadas nele. As Permissões 4310 podem abordar o conteúdo de páginas da web, entrada de dados em formulários, conteúdo gerado por usuários da página, conteúdo restrito a membros registrados, formulários que somente membros registrados podem preencher e certos dados particulares que somente alguns usuários (por exemplo, administradores) podem acessar.
[000439] FIG. 44 é um exemplo de interface de usuário para editar uma página da web e entradas em uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação. Por exemplo,
o banco de dados de “cursos” pode ser composto pelos campos 4412 (Título), 4414 (Descrição), 4416 (Imagem), 4418 (Professores) e outros. Esses campos podem incluir informações sobre cursos que podem ser extraídos do banco de dados e incluídos em páginas dinâmicas específicas. Notavelmente, os campos podem conter conteúdo de texto (por exemplo, campos 4412, 4414 e 4418), bem como outro conteúdo, como imagens ou vídeos (por exemplo, campo 4316). Como ilustrado, o campo 4416 inclui uma imagem correspondente ao percurso em mosaico TING. Em algumas modalidades, um usuário pode definir ainda mais o tipo ou layout de cada página da web dinâmica e especificar um URL para cada página dinâmica. Por exemplo, sufixos do URL podem corresponder a colunas no banco de dados (por exemplo, Título).
[000440] FIG. 45 é um exemplo de interface de usuário para editar uma página da web e exibir o resultado de uma coleção de banco de dados, de acordo com algumas modalidades da presente divulgação. Por exemplo, em uma página da web dinâmica que foi criada, o conteúdo do banco de dados pode ser incluído. Como ilustrado, o conteúdo 4520 inclui uma descrição de um curso a partir do banco de dados. O conteúdo 4520 é extraído automaticamente do banco de dados sem que o usuário precise copiá-lo manualmente na página da web. Usando essa técnica, várias páginas dinâmicas podem ser criadas, cada uma vinculando a uma parte diferente do banco de dados e tendo um arranjo exclusivo de conteúdo com base na sua vinculação ao banco de dados.
[000441] FIG. 46 é um exemplo de interface de usuário para editar uma página da web e criar uma função repetidora, de acordo com algumas modalidades da presente divulgação. Como descrito anteriormente, uma função repetidora pode ser adicionada a um site ou página para criar duas ou mais instâncias de elementos (por exemplo, combinações de texto e imagens) que são semelhantes em estrutura ou layout. Usando um repetidor, podem ser criadas duas ou mais instâncias de elementos que diferem em pelo menos um aspecto (por exemplo, tendo diferentes textos, imagens etc.).
[000442] Como mostrado, um usuário pode acessar o menu Repetidores 4622 para configurar um repetidor. Por exemplo, usando a barra de ferramentas 4204, um usuário pode selecionar a opção Listas e Tabelas, que permite a criação de repetidores e vários outros elementos que exibem vários objetos. Para preencher instâncias do repetidor com conteúdo, um usuário pode vincular o repetidor ou instâncias individuais a conjuntos de dados, como dados armazenados em um banco de dados. Em algumas modalidades, um usuário pode decidir adicionar um elemento a cada uma das instâncias de forma idêntica. Ao adicionar o elemento a uma instância, ele pode ser adicionado automaticamente a cada instância. Alternativamente, um usuário pode especificar (por exemplo, através de código de back-end ou de front-end) que cada instância criada por um repetidor deve ter conteúdo diferente.
[000443] FIG. 47 é um exemplo de interface de usuário para editar uma página da web e mostrar o resultado de uma função repetidora, de acordo com algumas modalidades da presente divulgação. Como ilustrado, um usuário criou três combinações de elementos 4724 através de um repetidor. Cada combinação 4247 possui uma estrutura semelhante de uma imagem, texto (nome do local), texto (descrição) e um ícone de hiperlink “Leia mais”. No modo de edição, o usuário pode editar ainda mais o layout e a aparência dessas instâncias, por exemplo, reposicionando a imagem em relação aos elementos de texto, alterando o hiperlink, redimensionando os campos etc. Além disso, como discutido anteriormente, cada elemento das instâncias pode se conectar a uma parte diferente de um banco de dados. Por exemplo, as três combinações de elementos 4724 podem vincular cada uma a uma coluna diferente em um banco de dados correspondente ao conteúdo que cada um deve extrair do banco de dados. Dessa maneira, enquanto as três combinações de elementos 4724 têm um layout comum, cada um tem um conteúdo textual ou gráfico diferente.
[000444] Várias operações ou funções são descritas aqui, que podem ser implementadas ou definidas como código ou instruções de software. Esse conteúdo pode ser diretamente executável (forma “objeto” ou “executável”), código de fonte ou código de diferença (código “delta” ou “campo”). As implementações de software das modalidades descritas neste documento podem ser fornecidas através de um artigo de fabricação com o código ou instruções nele armazenados, ou através de um método de operação de uma interface de comunicação para enviar dados através da interface de comunicação. Um meio de armazenamento legível por computador ou máquina pode fazer com que ela execute as funções ou operações descritas e inclui qualquer mecanismo que armazena informações em um formato acessível por uma máquina (por exemplo, dispositivo de computação, sistema eletrônico e semelhantes), como mídia gravável/não gravável (por exemplo, memória somente leitura (ROM), memória de acesso aleatório (RAM)), mídia de armazenamento em disco magnético, mídia de armazenamento óptico, dispositivos de memória flash e semelhantes). Uma interface de comunicação inclui qualquer mecanismo que faça interface com qualquer meio com fio, sem fio, óptico e semelhante para se comunicar com outro dispositivo, como uma interface de barramento de memória, uma interface de barramento de processador, uma conexão com a Internet, um controlador de disco e semelhantes. A interface de comunicação pode ser configurada fornecendo parâmetros de configuração e/ou enviando sinais para preparar a interface de comunicação para fornecer um sinal de dados que descreve o conteúdo do software. A interface de comunicação pode ser acessada através de um ou mais comandos ou sinais enviados para a interface de comunicação.
[000445] A presente divulgação também se refere a um sistema para executar as operações aqui contidas. Este sistema pode ser especialmente construído para os fins requeridos ou pode compreender um computador de uso geral ativado seletivamente ou reconfigurado por um programa de computador armazenado no computador. Esse programa de computador pode ser armazenado em um meio de armazenamento legível por computador, tal como, sem limitação, qualquer tipo de disco, incluindo disquetes, discos ópticos, CDROMs e discos ópticos magnéticos, ROMs (Memórias Somente Leitura), aleatórias memórias de acesso (RAMs), EPROMs, EEPROMs, cartões magnéticos ou ópticos ou qualquer tipo de mídia adequada para armazenar instruções eletrônicas, cada uma acoplada a um barramento de sistema de computador.
[000446] As modalidades da presente divulgação podem ser implementadas com instruções executáveis por computador. As instruções executáveis por computador podem ser organizadas em um ou mais componentes ou módulos executáveis por computador. Os aspectos da divulgação podem ser implementados com qualquer número e organização de tais componentes ou módulos. Por exemplo, os aspectos da divulgação não se limitam às instruções executáveis por computador específicas ou aos componentes ou módulos específicos ilustrados nas figuras e aqui descritos. Outras modalidades podem incluir diferentes instruções executáveis por computador ou componentes com mais ou menos funcionalidade do que ilustrado e descrito aqui.
[000447] Os programas de computador baseados na descrição escrita e nos métodos deste relatório descritivo estão dentro das habilidades de um programador de software. Os vários programas ou módulos de programa podem ser criados usando uma variedade de técnicas de programação. Por exemplo, seções ou módulos de programas podem ser projetados por meio de linguagem JavaScript, Scala, python, Java, C, C ++, assembly ou qualquer outra linguagem de programação, bem como linguagens de codificação de dados (como XML, JSON etc.), linguagens de consulta (como SQL), linguagens relacionadas à apresentação (como HTML, CSS etc.) e linguagem de transformação de dados (como XSL).
Uma ou mais dessas seções ou módulos de software podem ser integrados a um sistema de computador, mídia não transitória legível por computador ou software de comunicação existente.
[000448] As palavras “compreendendo”, “tendo”, “contendo” e “incluindo” e outras formas semelhantes têm o significado equivalente e são interpretadas como abertas, em que um item ou itens após qualquer uma dessas palavras não pretende ser uma lista exaustiva de tais itens ou itens ou deve se limitar apenas aos itens listados. Além do mais, as formas singulares “um”, “uma”, e “o/a” devem incluir referências no plural, a menos que o contexto dite claramente o contrário.
[000449] Tendo descrito os aspectos das modalidades em detalhes, será evidente que modificações e variações são possíveis sem se afastar do escopo dos aspectos da invenção como definido nas Reivindicações anexas. Como várias mudanças podem ser feitas nas construções, produtos e métodos anteriores, sem se afastar do escopo dos aspectos da invenção, pretende-se que todo o assunto contido na descrição anterior e mostrado nos desenhos anexos seja interpretado como ilustrativo e não em um sentido limitante.

Claims (29)

REIVINDICAÇÕES
1. Meio Legível por Computador Não Transitório, para atualizar um banco de dados de back-end contendo conjuntos de dados que preenchem uma pluralidade de páginas da web de um site, caracterizado pelo fato de que o meio legível por computador contém instruções que, quando executadas por pelo menos um processador, fazem com que pelo menos um processador execute as etapas de: receber via interface do usuário, uma pluralidade de elementos de dados, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site; armazenar os grupos de pelo menos um elemento de dados em um banco de dados; gerar uma pluralidade de páginas da web virtuais, caracterizado por que cada página da web virtual é uma visualização de uma página da web real correspondente antes que a página da web real correspondente seja ativada, em que cada uma das páginas da web reais correspondentes não é projetada com funcionalidade para atualizar o banco de dados; exibir cada grupo de pelo menos um elemento de dados em um grupo separado da pluralidade de páginas da web virtuais; exibir uma ferramenta de edição para permitir que um usuário edite uma página da web virtual a partir da pluralidade de páginas da web virtuais; converter as edições na página da web virtual em atualizações para o banco de dados;
armazenar as atualizações no banco de dados; e habilitar, durante uma exibição em tempo real de uma página da web real correspondente associada à página da web virtual, uma exibição na página da web real correspondente com as atualizações feitas na página da web virtual durante a visualização.
2. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que cada uma da pluralidade de páginas da web virtuais é exibida dentro de um quadro associado a uma interface do editor da interface do usuário.
3. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que as etapas compreendem ainda exibir um recurso selecionável pelo usuário, permitindo que o usuário navegue através da pluralidade de páginas da web virtuais para exibir individual e dinamicamente cada uma da pluralidade de páginas da web virtuais.
4. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que as etapas compreendem ainda exibir um recurso selecionável pelo usuário que permite ao usuário selecionar uma página da web virtual específica da pluralidade de páginas da web virtuais com base em um identificador da página da web virtual específica.
5. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 4, caracterizado por que o identificador da página da web virtual específica é baseado em um elemento de dados associado à página da web virtual específica.
6. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que as etapas compreendem ainda associar um URL exclusivo a cada uma da pluralidade de páginas da web virtuais.
7. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 6, caracterizado por que cada uma da pluralidade de páginas da web virtuais é gerada com base em um mapa do site que faz referência à URL exclusiva de cada uma da pluralidade de páginas da web virtuais.
8. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que a ferramenta de edição é configurada para receber edições nos grupos armazenados de pelo menos um elemento de dados no banco de dados.
9. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que a ferramenta de edição é configurada para receber edições em atributos da pluralidade de páginas da web virtuais.
10. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que a ferramenta de edição é configurada para receber edições no código que é usado para gerar a pluralidade de páginas da web virtuais.
11. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que a ferramenta de edição é configurada para exibir uma pluralidade de segmentos de código de esqueleto que representa o código real usado para gerar a pluralidade de páginas da web virtuais e receber edições no código de esqueleto que são traduzido em edições no código real.
12. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que os elementos de dados são recebidos via interface do usuário a partir de uma fonte externa.
13. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que as operações compreendem ainda: acessar um roteador baseado em software associado à pluralidade de páginas da web virtuais; e configurar o roteador baseado em software para gerar uma versão diferente de cada uma das várias páginas da web virtuais com base em um ou mais segmentos de um URL recebido.
14. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 1, caracterizado por que um subconjunto de cada grupo de pelo menos um elemento de dados é organizado por uma função repetidora, a função repetidora gerando uma ou mais instâncias exibidas do subconjunto de cada grupo de pelo menos um elemento de dados.
15. Meio Legível por Computador Não Transitório, de acordo com a Reivindicação 14, caracterizado por que a exibição em tempo real da página da web real correspondente inclui uma ou mais instâncias.
16. Método Implementado por Computador, para atualizar um banco de dados de back-end contendo conjuntos de dados que preenchem uma pluralidade de páginas da web de um site, o método compreendendo: receber via interface do usuário, uma pluralidade de elementos de dados, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site; armazenar os grupos de pelo menos um elemento de dados em um banco de dados;
gerar uma pluralidade de páginas da web virtuais, caracterizado por que cada página da web virtual é uma visualização de uma página da web real correspondente antes que a página da web real correspondente seja ativada, em que cada uma das páginas da web reais correspondentes não é projetada com funcionalidade para atualizar o banco de dados; exibir cada grupo de pelo menos um elemento de dados em um grupo separado da pluralidade de páginas da web virtuais; exibir uma ferramenta de edição para permitir que um usuário edite uma página da web virtual a partir da pluralidade de páginas da web virtuais; converter as edições na página da web virtual em atualizações para o banco de dados; armazenar as atualizações no banco de dados; e habilitar, durante uma exibição em tempo real de uma página da web real correspondente associada à página da web virtual, uma exibição na página da web real correspondente com as atualizações feitas na página da web virtual durante a visualização.
17. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que cada uma da pluralidade de páginas da web virtuais é exibida dentro de um quadro associado a uma interface do editor da interface do usuário.
18. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que compreende ainda exibir um recurso selecionável pelo usuário que permite ao usuário navegar através da pluralidade de páginas da web virtuais para exibir individual e dinamicamente cada uma da pluralidade de páginas da web virtuais.
19. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que compreende ainda exibir um recurso selecionável pelo usuário que permite ao usuário selecionar uma página da web virtual específica a partir da pluralidade de páginas da web virtuais com base em um identificador da página da web virtual específica.
20. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que o identificador da página da web virtual específica é baseado em um elemento de dados associado à página da web virtual específica.
21. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que compreende ainda associar um URL exclusivo a cada uma das várias páginas da web virtuais.
22. Método Implementado por Computador, de acordo com a Reivindicação 21, caracterizado por que cada uma da pluralidade de páginas da web virtuais é gerada com base em um mapa do site que faz referência ao URL exclusivo de cada uma da pluralidade de páginas da web virtuais.
23. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que a ferramenta de edição é configurada para receber edições nos grupos armazenados de pelo menos um elemento de dados no banco de dados.
24. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que a ferramenta de edição é configurada para receber edições em atributos da pluralidade de páginas da web virtuais.
25. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que a ferramenta de edição é configurada para receber edições no código que é usado para gerar a pluralidade de páginas da web virtuais.
26. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que a ferramenta de edição é configurada para exibir uma pluralidade de segmentos de código de esqueleto que representa o código real usado para gerar a pluralidade de páginas da web virtuais e receber edições no código de esqueleto que são traduzido em edições no código real.
27. Método Implementado por Computador, de acordo com a Reivindicação 16, caracterizado por que os elementos de dados são recebidos através da interface do usuário a partir de uma fonte externa.
28. Sistema Para Permitir Edições Dinâmicas em Páginas da Web Para Atualizar Banco de Dados de back-end , contendo conjuntos de dados que preenchem as páginas da web, caracterizado por que o sistema compreende: um banco de dados online configurado para armazenar uma pluralidade de elementos de dados para exibição em uma pluralidade de páginas da web, os elementos de dados organizados em um ou mais grupos de pelo menos um elemento de dados, cada grupo para exibição em uma página da web separada de um site, cada página separada sem funcionalidade para atualizar o banco de dados online; e pelo menos um processador configurado para: fornecer instruções remotamente a um navegador para fornecer uma interface exibindo uma versão editável de uma primeira página da web gerada com base em um grupo de pelo menos um elemento de dados, permitindo que o usuário edite pelo menos um elemento de dados;
converter edições recebidas por meio da interface na versão editável da primeira página da web em atualizações para o banco de dados online; armazenar as atualizações no banco de dados online; e habilitar, durante uma exibição em tempo real da primeira página da web, uma exibição na primeira página da web com as atualizações feitas na versão editável da primeira página da web.
29. Sistema Para Permitir Edições Dinâmicas em Páginas da Web Para Atualizar Banco de Dados de back-end , de acordo com a Reivindicação 28, caracterizado por que pelo menos um processador é ainda configurado para gerar uma pluralidade de versões editáveis separadas de páginas da web, em que cada versão editável separada de uma página da web é exibida dentro de um quadro associado a uma interface do editor da interface.
BR112019024309-7A 2017-07-24 2018-07-24 editar base de dados durante visualização de página da web virtual BR112019024309A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762536403P 2017-07-24 2017-07-24
US62/536,403 2017-07-24
US201862702278P 2018-07-23 2018-07-23
US62/702,278 2018-07-23
PCT/IB2018/001028 WO2019038588A1 (en) 2017-07-24 2018-07-24 EDITING A DATABASE WHEN PREDICTING A VIRTUAL WEB PAGE

Publications (1)

Publication Number Publication Date
BR112019024309A2 true BR112019024309A2 (pt) 2020-11-03

Family

ID=65014202

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019024309-7A BR112019024309A2 (pt) 2017-07-24 2018-07-24 editar base de dados durante visualização de página da web virtual

Country Status (9)

Country Link
US (11) US10331420B2 (pt)
EP (2) EP4235461A3 (pt)
JP (2) JP2020530610A (pt)
AU (2) AU2018319444B2 (pt)
BR (1) BR112019024309A2 (pt)
CA (1) CA3060362A1 (pt)
ES (1) ES2970458T3 (pt)
IL (1) IL271915A (pt)
WO (1) WO2019038588A1 (pt)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671352B1 (en) 2013-05-07 2014-03-11 Axure Software Solutions, Inc. Variable dimension version editing for graphical designs
US9158656B1 (en) * 2014-07-15 2015-10-13 American Express Travel Related Services Company, Inc. Systems and methods for progressively launching websites
JP2020530610A (ja) 2017-07-24 2020-10-22 ウィックス.コム リミテッド. 仮想ウェブページのプレビュー中におけるデータベースの編集
US20190065487A1 (en) * 2017-08-22 2019-02-28 Salesforce.Com, Inc. Filter logic in a dynamic page previewer
US11392664B1 (en) * 2017-08-29 2022-07-19 Massachusetts Mutual Life Insurance Company Dynamic web application based on events
GB201804904D0 (en) * 2018-03-27 2018-05-09 Palantir Technologies Inc Code correction
JP2019211827A (ja) * 2018-05-31 2019-12-12 ファナック株式会社 支援装置
CN109213486A (zh) * 2018-08-20 2019-01-15 北京百度网讯科技有限公司 用于生成用户定制的可视化组件的方法和装置
US10592589B1 (en) 2018-08-21 2020-03-17 Axure Software Solutions, Inc. Multi-view masters for graphical designs
US10691428B2 (en) * 2018-10-24 2020-06-23 Sap Se Digital compliance platform
JP7373563B2 (ja) 2018-11-14 2023-11-02 ウィックス.コム リミテッド. ウェブサイト構築システム用の構成可能なアプリケーションの作成および処理のためのシステムおよび方法
US10757009B2 (en) 2018-11-20 2020-08-25 Amazon Technologies, Inc. Global-scale connectivity using scalable virtual traffic hubs
US11579908B2 (en) 2018-12-18 2023-02-14 Vmware, Inc. Containerized workload scheduling
JP2022100419A (ja) * 2019-04-23 2022-07-06 株式会社ラキール 情報処理システム、情報処理装置、情報処理方法及びプログラム
US11134028B2 (en) 2019-04-26 2021-09-28 NM Nevada Trust Devices, systems and methods for optimizing workload performance of user facing web applications during high load events
CN110362299B (zh) * 2019-06-14 2020-06-26 杭州古德微机器人有限公司 一种基于blockly和树莓派的在线图形化编程***及其使用方法
US11349839B2 (en) * 2019-06-28 2022-05-31 Google Llc Systems and methods using modular user interfaces for managing network permissions
CN110286896B (zh) * 2019-06-28 2023-03-31 百度在线网络技术(北京)有限公司 可视化编辑方法、装置、设备及存储介质
US11635990B2 (en) 2019-07-01 2023-04-25 Nutanix, Inc. Scalable centralized manager including examples of data pipeline deployment to an edge system
US11501881B2 (en) 2019-07-03 2022-11-15 Nutanix, Inc. Apparatus and method for deploying a mobile device as a data source in an IoT system
US10789195B1 (en) * 2019-07-17 2020-09-29 Capital One Services, Llc Article, device, and techniques for serverless streaming message processing
US11457009B2 (en) * 2019-07-17 2022-09-27 Infiltron Holdings, Inc. Systems and methods for securing devices in a computing environment
CN110389807B (zh) * 2019-07-23 2022-10-25 北京字节跳动网络技术有限公司 一种界面翻译方法、装置、电子设备及存储介质
US11132418B2 (en) * 2019-08-01 2021-09-28 Kindest, Inc. Systems and methods for generating floating button interfaces on a web browser
US11172014B2 (en) * 2019-08-21 2021-11-09 Open Text Sa Ulc Smart URL integration using serverless service
US11645047B2 (en) 2019-09-13 2023-05-09 Axure Software Solutions, Inc. Focused specification generation for interactive designs
US11188614B2 (en) 2019-09-13 2021-11-30 Oracle International Corporation System and method for automatic suggestion for dynamic site compilation within a cloud-based content hub environment
US11727083B2 (en) * 2019-09-13 2023-08-15 Oracle International Corporation System and method for automatic selection for dynamic site compilation within a cloud-based content hub environment
US11853806B2 (en) 2019-09-27 2023-12-26 Cloudflare, Inc. Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store
US11853752B2 (en) * 2019-09-30 2023-12-26 EMC IP Holding Company LLC Migration of web applications between different web application frameworks
US10997341B1 (en) * 2019-12-12 2021-05-04 Salesforce.Com, Inc. System editing plugin
AU2020100253A4 (en) * 2020-02-21 2020-03-26 Soul & Wolf Pty Ltd Automation of CMS Development for a Website or Web Application
US11023558B1 (en) 2020-04-03 2021-06-01 International Business Machines Corporation Executing functions on-demand on a server utilizing web browsers
CN111625222B (zh) * 2020-05-26 2023-08-04 北京互金新融科技有限公司 前端代码的线上验证***及验证方法
US11553030B2 (en) * 2020-06-01 2023-01-10 Microsoft Technology Licensing, Llc Service worker configured to serve multiple single page applications
US11848084B1 (en) * 2020-07-23 2023-12-19 Express Scripts Strategic Development, Inc. Automated on-demand generation of custom physical labels for medication containers
US11204975B1 (en) * 2020-08-10 2021-12-21 Coupang Corp. Program interface remote management and provisioning
US11762531B2 (en) * 2020-10-28 2023-09-19 Axure Software Solutions, Inc. Stateful widget container management for interactive designs
US11321412B1 (en) * 2020-11-04 2022-05-03 Capital One Services, Llc Customized navigation flow
US11726764B2 (en) 2020-11-11 2023-08-15 Nutanix, Inc. Upgrade systems for service domains
US11665221B2 (en) 2020-11-13 2023-05-30 Nutanix, Inc. Common services model for multi-cloud platform
US11271987B1 (en) * 2020-11-26 2022-03-08 Digital.Ai Software, Inc. Universal webhook connectivity via multi-step HTTP transformation
CN112596719B (zh) * 2020-12-25 2024-07-05 中国农业银行股份有限公司 一种生成前后端代码的方法和***
US11175972B1 (en) * 2021-02-24 2021-11-16 Contentful GmbH Application framework for integrating APPs for editing content of a content management system
US11736585B2 (en) 2021-02-26 2023-08-22 Nutanix, Inc. Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications
US11824773B2 (en) 2021-03-30 2023-11-21 Amazon Technologies, Inc. Dynamic routing for peered virtual routers
US11907402B1 (en) * 2021-04-28 2024-02-20 Wells Fargo Bank, N.A. Computer-implemented methods, apparatuses, and computer program products for frequency based operations
CN113282291A (zh) * 2021-06-10 2021-08-20 豆盟(北京)科技股份有限公司 小程序的生成方法、装置、设备及存储介质
CN113176878B (zh) * 2021-06-30 2021-10-08 深圳市维度数据科技股份有限公司 自动查询方法、装置和设备
US11558448B1 (en) * 2021-09-22 2023-01-17 International Business Machines Corporation Sparse information sharing system
US11562043B1 (en) * 2021-10-29 2023-01-24 Shopify Inc. System and method for rendering webpage code to dynamically disable an element of template code
US11989255B2 (en) * 2021-12-30 2024-05-21 Monday.com Ltd. Client-side sorting and updating of paginated data obtained from a server
US11922116B2 (en) * 2022-04-11 2024-03-05 Contentful GmbH Annotations in a content model of a content management system
US12021743B1 (en) 2023-03-27 2024-06-25 Amazon Technologies, Inc. Software-defined multi-network-segment gateways for scalable routing of traffic between customer-premise network segments and cloud-based virtual networks

Family Cites Families (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247032B1 (en) * 1997-06-19 2001-06-12 International Business Machines Corp. Automated system and method for approving web site content
EP1163567B1 (en) * 1999-02-26 2008-11-19 Henry Haugland Mass generation of individual virtual servers, virtual web sites and virtual web objects
US7596606B2 (en) * 1999-03-11 2009-09-29 Codignotto John D Message publishing system for publishing messages from identified, authorized senders
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6728762B1 (en) * 2000-01-04 2004-04-27 International Business Machines Corporation System and method for browser definition of workflow documents
US8065399B2 (en) * 2000-04-17 2011-11-22 Circadence Corporation Automated network infrastructure test and diagnostic system and method therefor
US20020065851A1 (en) * 2000-06-02 2002-05-30 Watson Emerson C. System and method for creating a website
US6732332B1 (en) * 2000-08-28 2004-05-04 Und Aerospace Foundation Automated web site creation system
US6901424B1 (en) * 2000-10-10 2005-05-31 Markettools, Inc. System and method for creating a sample pool for a web-based survey
US20020099738A1 (en) * 2000-11-22 2002-07-25 Grant Hugh Alexander Automated web access for back-end enterprise systems
JP2002202937A (ja) * 2000-12-28 2002-07-19 Ibi Kk ウェブサイト自動作成装置、ウェブサイト自動作成システム、ウェブサイト自動作成方法、及び、記録媒体
US20020165936A1 (en) * 2001-01-25 2002-11-07 Victor Alston Dynamically branded web sites
JP2004530191A (ja) * 2001-02-22 2004-09-30 アクセンチュア グローバル サービスィズ ゲーエムベーハー ウェブ・サービスで構成された、インタネット・ホスティング・ビジネス・アプリケーションの開発システム
US8601492B2 (en) * 2001-03-31 2013-12-03 Siebel Systems, Inc. User interface for multi-channel communication
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
US7000218B2 (en) * 2001-06-29 2006-02-14 International Business Machines Corporation System and method for developing custom programmable tags
US6985939B2 (en) * 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
US7178108B1 (en) * 2001-12-28 2007-02-13 Sprint Communications Company L.P. System and method for development, maintenance and modification of multiple web sites
JP2004005527A (ja) * 2002-03-28 2004-01-08 Yosuke Hiratsuka 階層型サイト情報作成プログラム
JP2004062402A (ja) * 2002-07-26 2004-02-26 Fujitsu Ltd タイムアウト管理システム、タイムアウト管理サーバ、およびタイムアウト管理プログラム
CA2406876A1 (en) * 2002-10-04 2004-04-04 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for managing a collection of portlets in a portal server
US7240077B1 (en) * 2002-12-30 2007-07-03 Amazon.Com, Inc. Web site content change management
US7062506B2 (en) * 2003-01-24 2006-06-13 The Cobalt Group, Inc. Staged publication and management of dynamic webpages
US7613687B2 (en) * 2003-05-30 2009-11-03 Truelocal Inc. Systems and methods for enhancing web-based searching
US9778919B2 (en) 2003-06-27 2017-10-03 Adobe Systems Incorporated Dual context interaction with a content object for facilitating content creation and software development
US20040268238A1 (en) * 2003-06-30 2004-12-30 Peiya Liu Systems and methods for processing documents using an XML-based process flow description language
US7308643B1 (en) * 2003-07-03 2007-12-11 Google Inc. Anchor tag indexing in a web crawler system
US7403491B2 (en) * 2004-04-15 2008-07-22 Alcatel Lucent Framework for template-based retrieval of information from managed entities in a communication network
JP2006146506A (ja) * 2004-11-18 2006-06-08 Image:Kk Webサイト更新システム、Webサイト更新方法およびWebサイト更新プログラム
US8019749B2 (en) * 2005-03-17 2011-09-13 Roy Leban System, method, and user interface for organizing and searching information
US7689663B2 (en) * 2005-03-24 2010-03-30 Hewlett-Packard Development Company, L.P. Embedded web-based management method
US7536641B2 (en) * 2005-04-29 2009-05-19 Google Inc. Web page authoring tool for structured documents
US7734644B2 (en) * 2005-05-06 2010-06-08 Seaton Gras System and method for hierarchical information retrieval from a coded collection of relational data
US7734722B2 (en) * 2005-06-02 2010-06-08 Genius.Com Incorporated Deep clickflow tracking
CA2622315C (en) * 2005-08-17 2017-02-21 Wideport.Com Inc. Automatic website generator
US8117531B1 (en) * 2005-09-23 2012-02-14 Google Inc. Interpreted language translation system and method
US8301997B2 (en) * 2006-01-10 2012-10-30 International Business Machines Corporation System and method for serving multiple data objects and formatting functions in a single request
GB2434947B (en) * 2006-02-02 2011-01-26 Identum Ltd Electronic data communication system
US20070220419A1 (en) * 2006-03-10 2007-09-20 Web.Com, Inc. Systems and Methods of Providing Web Content to Multiple Browser Device Types
US7974956B2 (en) * 2006-07-21 2011-07-05 Yahoo! Inc. Authenticating a site while protecting against security holes by handling common web server configurations
US20080071929A1 (en) * 2006-09-18 2008-03-20 Yann Emmanuel Motte Methods and apparatus for selection of information and web page generation
US20090210631A1 (en) * 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
GB0622823D0 (en) * 2006-11-15 2006-12-27 British Broadcasting Corp Accessing content
US20080133647A1 (en) * 2006-11-17 2008-06-05 Mehrak Hamzeh System and method for delivering web content to a mobile network
CA2676692A1 (en) * 2007-02-09 2008-08-14 Novarra, Inc. Method and system for providing portions of information content to a client device
US20080243852A1 (en) * 2007-03-26 2008-10-02 International Business Machines Corporation System and Methods for Enabling Collaboration in Online Enterprise Applications
US8499237B2 (en) * 2007-03-29 2013-07-30 Hiconversion, Inc. Method and apparatus for application enabling of websites
CN101772895A (zh) * 2007-05-03 2010-07-07 三维实验室公司 远程配置便携式设备的用户界面的方法
US8838728B2 (en) * 2007-05-22 2014-09-16 Nokia Corporation Method, system, apparatus, network entity and computer program product for providing a user with an editable webpage
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8181246B2 (en) * 2007-06-20 2012-05-15 Imperva, Inc. System and method for preventing web frauds committed using client-scripting attacks
US8577835B2 (en) * 2007-06-28 2013-11-05 Salesforce.Com, Inc. Method and system for sharing data between subscribers of a multi-tenant database service
US8584094B2 (en) * 2007-06-29 2013-11-12 Microsoft Corporation Dynamically computing reputation scores for objects
US7779161B2 (en) * 2007-07-24 2010-08-17 Hiconversion, Inc. Method and apparatus for general virtual application enabling of websites
US8464228B2 (en) * 2007-08-23 2013-06-11 Accenture Global Services Limited Binary library
US9268849B2 (en) * 2007-09-07 2016-02-23 Alexander Siedlecki Apparatus and methods for web marketing tools for digital archives—web portal advertising arts
US8387006B1 (en) * 2007-12-05 2013-02-26 Adobe Systems Incorporated System and method for authoring a web page to be run-time editable
US8365140B2 (en) * 2007-12-20 2013-01-29 Hsbc Technologies Inc. Automated methods and systems for developing and deploying projects in parallel
JP2009176296A (ja) * 2007-12-27 2009-08-06 Nippon Institute Of Agroinformatics Ltd Web文書編集方法
US7886021B2 (en) * 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US8341200B2 (en) * 2008-06-12 2012-12-25 Pomian & Corella, Llc Protecting a web application against attacks through shared files
MY154409A (en) * 2008-07-21 2015-06-15 Secure Corp M Sdn Bhd F Website content regulation
EP2327022B1 (en) * 2008-07-22 2015-09-16 Webtrends Method and system for web-site testing
JP5476709B2 (ja) * 2008-12-09 2014-04-23 富士通株式会社 Webページ編集プログラム及びWebページ編集装置
US9691170B2 (en) * 2009-03-18 2017-06-27 Shutterfly, Inc. Proactive creation of photo products
GB0909695D0 (en) * 2009-06-05 2009-07-22 Maxymiser Ltd On page console
US9883008B2 (en) * 2010-01-15 2018-01-30 Endurance International Group, Inc. Virtualization of multiple distinct website hosting architectures
US8438648B2 (en) * 2010-02-16 2013-05-07 Celartem, Inc. Preventing unauthorized font linking
US8850219B2 (en) * 2010-05-13 2014-09-30 Salesforce.Com, Inc. Secure communications
WO2012014248A1 (ja) * 2010-07-25 2012-02-02 株式会社 コアアプリ ファイル公開管理コンピュータプログラム、ファイル公開管理コンピュータシステム
US20120131645A1 (en) * 2010-11-18 2012-05-24 Harm Michael W User Scriptable Server Initiated User Interface Creation
US8839093B1 (en) * 2011-01-12 2014-09-16 Optimizely, Inc. Systems and methods for website optimization
US8910156B1 (en) * 2011-04-29 2014-12-09 Netapp, Inc. Virtual machine dependency
US8938791B2 (en) * 2011-06-10 2015-01-20 International Business Machines Corporation System and method to control display of a realm name
US8874593B2 (en) * 2011-07-01 2014-10-28 Salesforce.Com, Inc. Testing data silo
US8959427B1 (en) * 2011-08-05 2015-02-17 Google Inc. System and method for JavaScript based HTML website layouts
US8474056B2 (en) 2011-08-15 2013-06-25 Bank Of America Corporation Method and apparatus for token-based virtual machine recycling
WO2013067437A1 (en) * 2011-11-02 2013-05-10 Hoffman Michael Theodor Systems and methods for dynamic digital product synthesis, commerce, and distribution
US20130117152A1 (en) * 2011-11-03 2013-05-09 Cbs Interactive, Inc. Javascript Widget Storefront
US8671417B2 (en) * 2011-12-12 2014-03-11 Microsoft Corporation Lightweight framework for web applications
US8793660B2 (en) * 2011-12-30 2014-07-29 Cellco Partnership Automated testing of programming code for a web service
US10185703B2 (en) 2012-02-20 2019-01-22 Wix.Com Ltd. Web site design system integrating dynamic layout and dynamic content
WO2013142273A1 (en) * 2012-03-19 2013-09-26 Citrix Systems, Inc. Systems and methods for providing user interfaces for management applications
US9430449B2 (en) * 2012-03-30 2016-08-30 Sdl Plc Systems, methods, and media for managing editable previews of webpages
US9262420B1 (en) * 2012-04-23 2016-02-16 Google Inc. Third-party indexable text
US20130346849A1 (en) * 2012-06-06 2013-12-26 Minds + Machines Automatic uploading and synchronization of media assets
US20140095463A1 (en) * 2012-06-06 2014-04-03 Derek Edwin Pappas Product Search Engine
US8943086B2 (en) * 2012-06-29 2015-01-27 Sap Se Model-based backend service adaptation of business objects
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
US8522134B1 (en) * 2012-08-13 2013-08-27 Volusion, Inc. Methods and apparatus for in-line editing of web page content with reduced disruption of logical and presentational structure of content
US20140053060A1 (en) * 2012-08-17 2014-02-20 Launchbase, LLC Website development tool
US10585981B2 (en) * 2012-09-13 2020-03-10 Samir Issa Method of data capture, storage and retrieval through user created form templates and data item templates by executing computer-executable instructions stored on a non-transitory computer-readable medium
US9317490B2 (en) * 2012-09-19 2016-04-19 TagMan Inc. Systems and methods for 3-tier tag container architecture
US9021052B2 (en) * 2012-09-28 2015-04-28 Interactive Memories, Inc. Method for caching data on client device to optimize server data persistence in building of an image-based project
US11449952B2 (en) * 2012-10-01 2022-09-20 Oracle International Corporation Efficiently modeling database scenarios for later use on live data
US9195477B1 (en) * 2012-10-09 2015-11-24 Sencha, Inc. Device profiles, deep linking, and browser history support for web applications
US9185078B2 (en) * 2012-12-18 2015-11-10 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing cross organizational data sharing
US10089406B2 (en) * 2013-01-30 2018-10-02 Oracle International Corporation Generating web pages with integrated content
US9712593B2 (en) * 2013-02-04 2017-07-18 Oracle International Corporation Javascript API for WebRTC
US9307031B2 (en) * 2013-02-04 2016-04-05 Oracle International Corporation Generic model for customizing protocol behavior through javascript
MY179529A (en) 2013-02-10 2020-11-10 Wix Com Ltd Third party application communication api
CA3096751C (en) * 2013-03-14 2023-10-17 Daniel SHMUGLIN A system and method for dialog customization
US9971790B2 (en) * 2013-03-15 2018-05-15 Google Llc Generating descriptive text for images in documents using seed descriptors
US20170147480A1 (en) * 2013-04-23 2017-05-25 Google Inc. Test script generation
US20150011338A1 (en) * 2013-07-02 2015-01-08 Jeremy Russotti Training device
US10362145B2 (en) * 2013-07-05 2019-07-23 The Boeing Company Server system for providing current data and past data to clients
US9836330B2 (en) 2013-07-16 2017-12-05 Hitachi, Ltd. Virtual resource management tool for cloud computing service
US9513885B2 (en) * 2013-08-22 2016-12-06 Peter Warren Web application development platform with relationship modeling
US20150058339A1 (en) 2013-08-26 2015-02-26 Go DaddyOperating Company, LLC Method for automating search engine optimization for websites
US9229702B1 (en) * 2013-08-28 2016-01-05 Lithium Technologies, Inc. Systems and methods for application plugin deployment for websites
US10853837B2 (en) * 2013-10-07 2020-12-01 Adobe Inc. Integrated testing, targeting and measuring of web site components
US9519525B2 (en) * 2013-11-14 2016-12-13 Dropbox, Inc. File-level commenting
US9817801B2 (en) 2013-12-04 2017-11-14 Go Daddy Operating Company, LLC Website content and SEO modifications via a web browser for native and third party hosted websites
US9607332B1 (en) * 2014-02-07 2017-03-28 Google Inc. Embedded web application gallery
MX359824B (es) 2014-02-11 2018-10-11 Wix Com Ltd Sistema para la sincronizacion de cambios en sitios web editados y aplicaciones interactivas.
CA2949397A1 (en) * 2014-05-18 2015-11-26 Kai ZHOU Performance testing system and method
US9954936B2 (en) 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
WO2016199018A1 (en) 2015-06-07 2016-12-15 Wix.Com Ltd System and method for the generation of an adaptive user interface in a website building system
US10726371B2 (en) * 2015-06-08 2020-07-28 Sap Se Test system using production data without disturbing production system
CN107615244B (zh) 2015-06-26 2021-07-13 英特尔公司 在虚拟机上运行一个或多个容器的技术
US9864735B1 (en) * 2015-08-27 2018-01-09 Google Llc In-domain webpage editing
US10229214B2 (en) * 2015-12-31 2019-03-12 Ca, Inc. Dynamic web page navigation
US10148790B2 (en) * 2016-03-04 2018-12-04 Bank Of America Corporation Deployment of integrative HTML-based engine from an edge server
US10684839B2 (en) * 2016-06-15 2020-06-16 Red Hat Israel, Ltd. Plugin for software deployment
US10678995B2 (en) * 2016-08-12 2020-06-09 Netsuite, Inc. System and methods for control of content presented on web pages
US20180052809A1 (en) * 2016-08-16 2018-02-22 Microsoft Technology Licensing, Llc Inferring user interaction with an iframe
US10025924B1 (en) * 2016-08-26 2018-07-17 Parallels IP Holdings GmbH Taskless containers for enhanced isolation of users and multi-tenant applications
US10223078B2 (en) * 2016-09-29 2019-03-05 Ca, Inc. Application-type independent dynamic plug-in evaluation tool
US20180097820A1 (en) * 2016-10-03 2018-04-05 Adobe Systems Incorporated Managing content upload and content retrieval
US11537272B2 (en) * 2016-12-21 2022-12-27 Aon Global Operations Se, Singapore Branch Content management system extensions
US10250389B2 (en) * 2017-01-17 2019-04-02 Go Daddy Operating Company, LLC Script verification using a hash
US10671570B2 (en) * 2017-02-01 2020-06-02 Open Text Sa Ulc Web application open platform interface (WOPI) server architecture and applications for distributed network computing environments
US11003668B2 (en) * 2017-02-21 2021-05-11 Sap Se Programming language independent software testing environment
US20180309720A1 (en) * 2017-04-25 2018-10-25 Verisign, Inc. Systems, devices, and methods for automatic website generation and domain name suggestion
US10572361B2 (en) * 2017-04-28 2020-02-25 The Boeing Company Concurrent production use of a production enterprise system and testing of a modified enterprise system
JP2020530610A (ja) 2017-07-24 2020-10-22 ウィックス.コム リミテッド. 仮想ウェブページのプレビュー中におけるデータベースの編集
US10866935B2 (en) * 2017-08-18 2020-12-15 Benjamin J. Chung File management method
US20200057714A1 (en) * 2018-08-17 2020-02-20 Google Llc Testing data changes in production systems

Also Published As

Publication number Publication date
EP3593254A4 (en) 2021-01-20
US10719300B2 (en) 2020-07-21
US10209966B2 (en) 2019-02-19
US20190026082A1 (en) 2019-01-24
US11106860B2 (en) 2021-08-31
WO2019038588A1 (en) 2019-02-28
IL271915A (en) 2020-02-27
US20190258459A1 (en) 2019-08-22
US20190149591A1 (en) 2019-05-16
AU2018319444B2 (en) 2023-11-16
AU2018319444A1 (en) 2019-10-31
US20190026443A1 (en) 2019-01-24
US10326821B2 (en) 2019-06-18
ES2970458T3 (es) 2024-05-28
EP3593254A1 (en) 2020-01-15
CA3060362A1 (en) 2019-02-28
JP2020530610A (ja) 2020-10-22
US10397305B1 (en) 2019-08-27
US20240220706A1 (en) 2024-07-04
US20190028531A1 (en) 2019-01-24
US20190245910A1 (en) 2019-08-08
US20190026382A1 (en) 2019-01-24
JP2024075645A (ja) 2024-06-04
US11875104B2 (en) 2024-01-16
US10521198B2 (en) 2019-12-31
US20190026296A1 (en) 2019-01-24
AU2024200221A1 (en) 2024-02-01
US20190026083A1 (en) 2019-01-24
EP4235461A2 (en) 2023-08-30
EP3593254B1 (en) 2023-08-02
US10379820B1 (en) 2019-08-13
US20210397776A1 (en) 2021-12-23
US10915300B2 (en) 2021-02-09
US10331420B2 (en) 2019-06-25
EP4235461A3 (en) 2023-11-15

Similar Documents

Publication Publication Date Title
US11875104B2 (en) On-demand web-server execution instance for website hosting with custom back-end functionality
US11915016B2 (en) System and method for identifying, indexing, and navigating to deep states of mobile applications
US9465822B2 (en) Data model generation based on user interface specification
US9141346B2 (en) Layout management in a rapid application development tool
US8671387B2 (en) Compilation and injection of scripts in a rapid application development
US8788955B2 (en) Creation and configuration of compound widgets
US10936477B2 (en) End-to-end user interface component testing
US20120291006A1 (en) Development Architecture for Cloud-Based Applications
US20210149640A1 (en) Automatically producing mobile application binaries
Manfield Joomla for Developers
Williams et al. Microsoft SharePoint 2013 Administration Inside Out

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]