KR101412765B1 - 다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달 - Google Patents

다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달 Download PDF

Info

Publication number
KR101412765B1
KR101412765B1 KR1020137011906A KR20137011906A KR101412765B1 KR 101412765 B1 KR101412765 B1 KR 101412765B1 KR 1020137011906 A KR1020137011906 A KR 1020137011906A KR 20137011906 A KR20137011906 A KR 20137011906A KR 101412765 B1 KR101412765 B1 KR 101412765B1
Authority
KR
South Korea
Prior art keywords
content
compiled
application
section
app
Prior art date
Application number
KR1020137011906A
Other languages
English (en)
Other versions
KR20140011304A (ko
Inventor
요한네스 베르그
마르쿠스 위카르스
마그너스 홀트룬드
Original Assignee
루미 테크놀로지스 리미티드
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 루미 테크놀로지스 리미티드 filed Critical 루미 테크놀로지스 리미티드
Publication of KR20140011304A publication Critical patent/KR20140011304A/ko
Application granted granted Critical
Publication of KR101412765B1 publication Critical patent/KR101412765B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/64Retargetable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
    • 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/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 일반적으로 콘텐츠 또는 기능의 전자 디바이스들로의 전달의 속도 및 신뢰도를 최적화하는 것에 관한 것이다. 특정 양상들에서, 본 발명은 웹 인터페이스를 갖는 프로덕션 서버를 포함하는 콘텐츠 관리를 위한 시스템을 제공하며, 상기 콘텐츠 관리를 위한 시스템은 프로듀서로 하여금 콘텐츠를 생성할 수 있게 한다. 상기 시스템은 콘텐츠를 검색할 수 있으며 그것을 동적 섹션에 기록할 수 있는 게이트웨이 서버를 포함한다. 상기 게이트웨이 서버는 이후 동적 섹션을, 여전히 콘텐츠를 포함하는 컴파일된 섹션으로 컴파일할 수 있고, 그것을 클라이언트에 송신하여, 최종 사용자에게 새로운 콘텐츠 또는 기능에 대한 엑세스를 제공할 수 있다.

Description

다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달{MULTI-PHASED AND PARTITIONED CONTENT PREPARATION AND DELIVERY}
본 출원은 2010년 10월 8일자로 출원된 미국 가특허출원 제61/391,272호에 대한 우선권을 주장하며, 상기 가특허출원 제61/391,272호는 그 전체가 본 명세서에 참조로서 포함된다.
본 발명은 일반적으로 전자 디바이스들로의 콘텐츠(content) 또는 기능(functionality)의 전달에 관한 것이며, 구체적으로는 상기 전달의 속도 및 신뢰도를 최적화하는 방법에 관한 것이다.
스마트폰 및 태블릿 컴퓨팅 디바이스와 같은 휴대형 소형 디바이스들이 전세계적으로 널리 분포되어 있다. 일부 시장에서는, 거의 모든 잠재적 소비자가 그들 소유의 디바이스를 휴대하며, 정보를 송신 및 전송하기 위하여 상기 디바이스를 사용한다. 디바이스들은 Wi-Fi를 통해 액세스되는 인터넷 연결과 같은 데이터 네트워크뿐만 아니라, 3G 및 4G 네트워크와 같은 폰 네트워크을 사용하도록 되어 있다. 따라서, 이 디바이스들은 이들의 사용자들에게 상기 디바이스들이 켜져 있는 동안 거의 지속적으로 콘텐츠에 액세스할 수 있는 능력을 제공할 수 있다.
소비자들의 이러한 유비쿼토스(ubiquitous)한 그리고 지속적(persistent)인 연결성은 게임, 마케팅, 뉴스, 통신, 엔터테인먼트, 및 다른 전자 매체를 위한 확실한 기회들을 제공한다. 그러나, 인터랙티브 앱 및 게임, 그룹 채팅(chatting) 또는 "트위팅(tweeting)", 빈번히 갱신되는 소셜 네트워킹 앱, 스트리밍 음악 사이트, 또는 인터넷 경매 사이트와 같은 복잡하고 인터랙티브한 전자 매체는 사용자의 볼륨이 증가함에 따라 서버 능력에 즉각적으로 부담을 지울 수 있다. 또한, 웹 페이지를 생성하고 그것을 포스팅하는 것 또는 사람들에게 그들의 폰으로 플레이하기 위한 앱을 제공하는 것과 같은 오래된 패러다임들이 사람을 실시간 이벤트들, 다른 파티들, 및 그때 그때의(on-the-fly) 새로운 정보와 관련시키는 게임, 앱, 또는 매체 재생기와 같은 연속적인 액티브 콘텐츠 전달에 대한 수요로 대체되고 있다.
현재 전자 매체와 관련된 콘텐츠의 볼륨, 연결된 사용자들의 수, 그리고 기존의 콘텐츠 전달 기술에 대한 이 결과적인 수요는, 데이터 연결을 느려지게 하고 종종 정지되게 또는 끊기게 할 뿐만아니라, 지체 시간(lag-time) 및 증가된 레이턴시(latency)를 야기한다. 콘텐츠 준비 및 전달 방법들은 현재의 그것들에 대한 수요에 미치지 못한다. 결과적으로, 사용자들은 콘텐츠에 대한 액세스를 획득하는데에 있어서 지연을 겪게 된다. 또한, 많은 수의 사용자들 사이에서 빠른 상호작용성(interactivity)을 요구하는 특정 종류의 콘텐츠가 최적의 속도에서 배포되기가 어렵다.
본 발명은 콘텐츠 또는 기능의 전자 디바이스로의 빠르고 신뢰성 있는 전달을 제공하며, 상기 전달은 앱 또는 앱에 대한 변경으로서 그러한 실행가능한 콘텐츠의 전달을 포함한다. 디바이스를 사용하는 최종-사용자는 그들이 디바이스상에서 액세스하는 콘텐츠가 서버-측 변경에 응답하여 갱신된다 하더라도 서비스에 있어서 정지 시간(down-time) 또는 인터럽션(interruption)을 겪지 않는다. 새로운 콘텐츠가, 최종 사용자가 스크린들 사이를 브라우즈하는 것만큼 빠르게 최종 사용자의 디바이스에 나타나거나, 또는 심지어 그것이 존재하게 되자마자 디바이스에 푸시(push)될 수 있다. 시스템은 매우 많은 수의 디바이스들을 서비스하도록 확장가능(scalable)하고 그리고 또한 동시에 많은 디바이스들을 개별적으로 서비스(개별 최종 사용자들에게 개인적으로 특별한 콘텐츠를 전달)할 수 있다. 콘텐츠 갱신이 디바이스들에 전달되고 상기 디바이스에서 기능화(functionalize)되는 속도 및 신뢰도로 인하여, 본 발명은 광범위한 멀티-클라이언트, 리얼-타임, 인터랙티브 전자 서비스를 가능하게 하는 시스템 및 방법을 제공한다. 특정 실시예들에서, 본 발명은 게임, 온라인 뱅킹 또는 트레이딩, 퀴즈, 설문조사, 전자책 또는 뉴스 사이트, 또는 어떤 다른 전자 기능과 관련된 콘텐츠를 신속하고 신뢰성있게 갱신하는 능력을 제공한다.
본 발명에서 제공되는 다중-단계화된 그리고 파티셔닝된 콘텐츠 준비 프로세스는 클라이언트/서버 콘텐츠 관리 시스템으로 하여금 콘텐츠 및 행동(behavior)(이하에서는 콘텐츠 앱으로 칭함)의 휴대용 기기들(handhelds)로의 전달을, 속도, 응답성, 및 신뢰도 면에서 최적화할 수 있게 한다. 섹션으로 지칭되는 콘텐츠 앱 구성요소 부분들이 빠른 액세스를 위해 서버 상의 메모리 내에 캐시된다. 변경된, 또는 휴대기기 상의 네비게이션된 타켓에 직접적으로 관련된, 콘텐츠 앱 섹션들만이 준비되어 클라이언트에게 송신되고, 따라서 소비되는 데이터 대역폭을 최소화한다. 섹션들은 데이터가 서버 상에서 변경된 결과로서 클라이언트에게 실시간으로 푸시될 수 있다. 대안적으로, 섹션들은 원한다면 수동적으로 푸시될 수 있다. 섹션들을 클라이언트에 푸시함으로써, 본 발명의 시스템 및 방법들은 클라이언트로 하여금 상기 클라이언트가 검색(retrieval)을 시도하기 위해 아무것도 하지 않는 경우에 조차도 갱신된 또는 변경된 콘텐츠를 수신할 수 있게 한다.
콘텐츠 준비로부터 클라이언트 연결성을 - 물리적으로(예컨대, 전용 서버들을 분리함으로써), 또는 논리적으로(예컨대, 가상 머신을 통해) - 파티셔닝함으로써, 본 발명의 시스템 및 방법들은, 동일한 콘텐츠가 서버 측에서 갱신되고 있는 동안에도, 클라이언트로 하여금 상기 콘텐츠에 대한 신뢰성있는 지속적인 연결을 겪게 한다. 콘텐츠를 섹션들로 파티셔닝함으로써, 그리고 단지 섹션들을, 이들이 변경되었을 때 및 연결이 갱신을 허용할 때 갱신함으로써, 본 발명의 시스템 및 방법들은 클라이언트로 하여금, 데이터 연결이 신뢰할 수 없는 때 조차도 콘텐츠에 대한 신뢰성있고 끊김없는 액세스를 겪게 한다. 본 발명의 시스템의 클라이언트 콘텐츠 액세스와 다른 컴포넌트들 사이의 파티션은 따라서 서버 측 이벤트들로부터 클라이언트를 격리시킨다.
특정 태양들에서, 본 발명은 웹 인터페이스에 결합된 프로덕션 서버를 포함하는 콘텐츠를 관리함과 아울러, 상기 웹 인터페이스를 통해, 프로듀서로 하여금 콘텐츠를 포함하는 소스 섹션을 생성할 수 있게 하도록 된 시스템을 제공한다. 상기 시스템은, 메모리, 하나 이상의 프로세서들, 및 입력 디바이스를 구비한, 소스 섹션을 수신할 수 있는 게이트웨이 서버를 포함한다. 프로덕션으로부터 소스 섹션을 수신한 후, 게이트웨이 서버는 소스 섹션을 저장하고 그것을 판독하여 동적 섹션이 기입할 수 있다. 상기 동적 섹션은 여전히 콘텐츠를 포함할 수 있으나, 컴파일된 포맷이다. 게이트웨이 서버는, 이후 상기 동적 섹션을 콘텐츠를 포함하는 컴파일(complied) 섹션으로 컴파일하고; 그리고 상기 컴파일된 섹션을 클라이언트 큐로 송신할 수 있으며, 상기 클라이언트 큐로부터 상기 동적 섹션이 클라이언트에게 직접 전송될 수 있다.
특정 실시예들에서, 시스템은 모바일 디바이스에 인스톨될 수 있는 모바일 애플리케이션을 제공하여, 예를 들어, 소켓 연결 또는 HTTP 연결에 의해 상기 디바이스를 게이트웨이 서버에 연결되게 한다. 모바일 디바이스는 이후 게이트웨이 서버에 리스너(listener)로서 등록하고 컴파일된 섹션을 수신한다. 컴파일된 섹션이 최종 사용자에게 콘텐츠를 제공하므로, 이는 최종-사용자로 하여금 새 콘텐츠를 경험하게 한다.
일부 실시예들에서, 시스템은 그룹 및 개별 데이터 아이템들을 저장할 수 있는 코어 데이터베이스를 포함한다. 개별 데이터 아이템은 일반적으로, 패스워드 또는 크레딧 카드 번호와 같은 최종 사용자에게 개인적인 어떤 것이다. 그룹 데이터 아이템은 일반적으로, 최종 사용자들 사이에서 공유될 어떤 것(예컨대, 아티클(article) 또는 게임)이다. 데이터 아이템은 둘 모두일 수 있는 바, 예를 들어, 게임에서 이긴 플레이어의 신원일 수 있다.
게이트웨이 서버는 데이터베이스로부터 그룹 데이터 아이템을 판독할 수 있고 그것을 소스 섹션과 함께 포함할 수 있으며, 한편 동적 섹션을 생성하기 위해 이들을 컴파일할 수 있다. 이와 관련하여, 그룹 동적 섹션은 프로덕션 서버로부터 직접 오지않았던 컨텐츠를 포함하여 준비될 수 있다. 게이트웨이 서버는 또한 개별 데이터 아이템을 갖는 동적 섹션을 더 컴파일하여 개별의 컴파일된 섹션을 생성할 수 있고, 이는 예컨대 사적인 정보 또는 프로덕션 서버로부터 직접 오지 않았던 정보를 포함할 수 있다.
본 발명의 시스템 및 방법은 컴파일된 섹션이 클라이언트 디바이스로 전달되는 바이너리 패킷 포맷을 제공한다. 일부 실시예들에서, 어떤 동적 섹션이 컴파일됨에 따라, 일부 경우에 하드 드라이브 또는 플래시 드라이브와 같은 비휘발성 메모리에 저장됨이 없이, 상기 동적 섹션이 바이너리 패킷 포맷으로 바로 컴파일되고 클라이언트에게 곧장 스트리밍된다.
콘텐츠 전달의 최적화는, 필요한 것을, 그것이 첫번째로 필요해질 때, 첫번째로 전달함으로써 달성될 수 있다. 예를 들어, 사용자가, 어떠한 사용자도 아직 요청하지 않은 콘텐츠를 요청하고 그리고 그 콘텐츠를 포함하는 동적 섹션이 존재하지 않으면, 게이트웨이 서버는 프로덕션 서버로 하여금 게이트웨이 서버에 그 콘텐츠를 포함하는 소스 섹션을 송신하게 할 수 있다. 게이트웨이 서버는 이후, 실질적으로 즉시, 그 소스 섹션을 동적 섹션으로 컴파일하고 그리고 그것을 컴파일된 섹션으로 재컴파일하는 한편 재컴파일된 것의 출력을 바이너리 패킷의 형태로 요청 클라이언트에 스트리밍할 수 있다.
특정 양상들에서, 본 발명은 콘텐츠를 빠르고 신뢰성있게 하나 이상의 클라이언트들에 전달하기 위한 장치를 제공한다. 상기 장치는 예를 들어, 메모리, 입력 디바이스, 하나 이상의 프로세서들을 포함하는 컴퓨팅 디바이스일 수 있다. 상기 장치는 프로덕션 서버로부터 소스 섹션을 수신할 수 있다. 특정 실시예들에서, 소스 섹션이 생성되고, 저장되고, 그리고 XML 포맷으로 전송된다.
소스 섹션이 장치 내에 저장되고, 이후 여기서 판독되어 동적 섹션에 기입되며, 상기 동적 섹션이 이후 컴파일되고 클라이언트에게 스트리밍되어, 콘텐츠를 전달한다.
장치는 그룹 및 개별 데이터 아이템들을 저장할 수 있는 코어 데이터베이스와 통신할 수 있다.
장치는 이후 소스 섹션 및, 선택적으로, 그룹 데이터 아이템을 판독하여 동적 섹션을 기록할 수 있으며 이후 상기 동적 섹션 및, 선택적으로, 개별 데이터 아이템을 컴파일된 섹션으로 컴파일할 수 있다. 일부 실시예들에서, 코어 데이터베이스는 제2 개별 데이터 아이템을 더 포함하고 상기 장치는 동적 섹션 및 제2 개별 데이터 아이템을 상기 컴파일된 섹션과는 다른 제2 컴파일된 섹션으로 컴파일한다. 마찬가지로, 장치는 서로 다른 그룹 데이터 아이템들과 함께 하나의 소스 섹션을 컴파일함으로써, 또는 하나의 그룹 데이터 아이템과 함께 서로 다른 소스 섹션들을 컴파일함으로써, 서로 다른 동적 섹션들을 만들 수 있다. 본 발명의 시스템 및 방법은 다중-단계 컴파일 프로세스에서 후속 섹션 또는 심지어 동일 스테이지에 있는 섹션을 생성하기 위하여 컴파일되고 있는 데이터 아이템들 및 섹션들의 어떤 조합 또는 교차-조합(cross-combination)을 포함하도록 광의로 구성가능하다.
일반적으로, "단계 1"은 예컨대 프로듀서에 의해 생성되는 것과 같은 소스 섹션을 컴파일하는 것을 포함할 수 있는 프로세스를 지칭한다. 단계 1에서, 소스 섹션은, RSS 피드 또는 프로듀서에 의해 생성되었으나 섹션 내에 저장되지 않은 다른 콘텐츠(예를 들어, 아티클)와 같은 외부 콘텐츠를 포함하도록 컴파일될 수 있다. 일부 실시예들에서, 단계 1 출력은 XML 포맷의 소스 섹션들을 포함한다.
단계 2는 일반적으로 사용자-생성 콘텐츠를 더 포함하도록 단계 1의 결과적인 컴파일된 섹션을 더 컴파일하는 프로세스를 나타낸다. 사용자-생성(user-generated) 콘텐츠는, 예를 들어, 폴그래프(pollgraph)들 또는 모든 사용자에게 동일한 다른 통계들을 포함할 수 있다. 일부 실시예들에서, "단계 2"는 동적 섹션을 생성하는 컴파일 프로세스를 나타낼 수 있다. 동적 섹션은 때때로 액티브 섹션이다. 액티브 섹션은 등록된 클라이언트에 의해 능동적으로(actively) 리스닝되고 있는 동적 섹션이다.
단계 3은 일반적으로 사용자-특정 데이터를 포함하는 단계 2의 결과적인 컴파일된 섹션 데이터를 컴파일하는 프로세스를 나타낼 수 있다. 예를 들어, 웰컴 스크린 상에 사용자의 이름을 프린트하거나, 특정 질문에 대한 사용자의 대답을 프린트하거나, 또는 섹션의 특정 부분에 대한 액세스를 검사를 행하는 것이다. 특정 실시예들에서, 단계 3은 각각의 사용자에 대해 별개로 행해질 수 있고, 그 결과로, 결과적인 섹션 데이터가 있다면 상기 결과적인 섹션 데이터를 클라이언트를 위한 패킷 큐에 넣을 수 있다. 일부 실시예들에서, "단계 3"은 동적 섹션으로 시작하는 것을 포함하며, 결과적으로, 클라이언트 큐에서 적어도 하나의 섹션을 바이너리 패킷 포맷으로 큐잉하게 한다.
본 발명은 콘텐츠 앱 또는 "앱"을 컴파일된 섹션의 형태로 클라이언트 디바이스에 전달할 수 있게 한다. 콘텐츠 앱은 일반적으로 섹션의 콘텐츠를 나타내기 위하여 사용된다. 일부 실시예들에서, 그것은 콘텐츠, 또는 디바이스에 기능성을 제공하는 콘텐츠이다. 일부 실시예들에서, 콘텐츠 앱은 스크린 로직, 텍스트 또는 이미지와 같은 콘텐츠이거나 이들을 포함한다. 일부 실시예들에서, 콘텐츠 앱은 주식 시세(stock quotes), 또는 디바이스에서 구동되는 프로세스의 비밀 변수(behind-the-scenes variable)에 대한 갱신과 같은 데이터이거나 이들을 포함한다.
일부 실시예들에서, 디바이스는 상기 디바이스에 애플리케이션을 인스톨하였으며, 상기 애플리케이션은 때때로 모바일 애플리케이션 또는 클라이언트 애플리케이션으로 지칭된다. 콘텐츠 앱 및 모바일 애플리케이션은 서로 기능화(functionalize)할 수 있다. 일 예시적인 예에서, 모바일 애플리케이션은 콘텐츠 앱을 실행하기 위한 로컬의 특화된 운영 시스템으로서 기능할 수 있다. 이 실시예에서, 콘텐츠 앱은 디바이스 상에서 실행될 수 있고 그 디바이스의 주요 운영 시스템 또는 플래폼에 대해 무관(agnostic)할 수 있다.
일부 실시예들에서, 서로 다른 플래폼 또는 운영 시스템들을 포함하는 서로 다른 디바이스들에 각각 그들 소유의 모바일 애플리케이션이 제공된다. 각각의 모바일 애플리케이션은 이후, 그것이 놓인 플래폼 또는 운영 시스템에 상관없이, 콘텐츠 앱을 기능화할 수 있다. 따라서, 본 발명의 시스템 및 방법은, 예를 들어 입력으로서 단일의 동적 섹션을 사용하여, 각각의 모바일 디바이스가 그 디바이스 상에서 실행가능한 콘텐츠 앱을 수신하도록 하나 이상의 컴파일된 섹션들을 컴파일할 수 있다. 일부 실시예들에서, 본 발명은 Java ME, iPhone, iOS, Blackberry OS, Android, 또는 바다(bada)를 포함할 수 있는 플래폼 및 운영 시스템 상에서 동작가능한 모바일 애플리케이션을 제공한다.
본 발명의 데이터베이스는 많은 시도들로 고도로 확장될 수 있다. 상기 데이터베이스는 많은 수의 그룹 또는 개별 데이터 아이템들을 포함할 수 있으며, 이들 각각은 프로덕션 서버 상에서 저작(author)되는 것, 자동적으로 발생되는 것, 클라이언트에 의해 공급되는 것, 또는 다중-단계 컴파일 동안에 생성되는 것으로부터 발생된 것일 수 있다.
다중-단계 컴파일은 매우 유연하고 커스터마이즈 가능하며, 서로 다른 어떤 개수의 동적 섹션 또는 컴파일된 섹션을 기록하는데 사용될 수 있고, 여기서 각각의 섹션은 콘텐츠 및 데이터 아이템들의 어떤 조합을 포함한다. 복수의 단계들에서 콘텐츠를 컴파일함으로써, 처리되는 데이터의 총량이 최소화된다. 이는 컴파일 프로세스를 최적화함으로써 현저한 이익을 발생시킨다. 예를 들어, 단계 1은 소스 섹션이 갱신될 때 단 한번 행해질 필요가 있다. 단계 2에서 일반 사용자(general user) 데이터를 포함함으로써, 단계 2의 컴파일이 각각의 개별 최종 사용자에 대해 반복되지 않아도 되어, 프로세스 시간, 비용, 및 효율성의 측면에서 현저한 절약이 된다. 또한, 단계 2의 프로세스는 섹션의 어느 부분이 변경되었는지를 검출하여, 실제로 변경된 그 부분들만을 추가의 프로세싱을 위해 송신할 수 있다. 단계 3에서 사용자 특정 컴파일을 행함으로써 추가의 이점이 얻어지며, 그럼으로써 단계 2가, 예를 들어, 일반 데이터에 대해 포커스될 수 있게 한다.
본 발명의 시스템 및 방법은 컴파일된 데이터 섹션들을 바이너리 패킷들(상기 바이너리 패킷들은 전달될 콘텐츠를 포함하도록 됨)로 구성된 포맷으로 빠르고 신뢰성있게 디바이스에 스트리밍할 수 있다.
다중-단계 콘텐츠 준비 프로세스의 단계 1은, 예를 들어 시스템 상에의 제1 로그온(first logon); 어떤 클라이언트에 의해 이전에 액세스되지 않은 콘텐츠에 대한 제1 클라이언트로부터의 요청; 피드 매니저가 새 콘텐츠를 검색; 프로듀서가 새 콘텐츠를 생산; 스케줄링된 이벤트가 발생; 그리고 프로듀서가 콘텐츠를 푸시하는 것에 의해 개시될 수 있다.
다중-단계 콘텐츠 준비 프로세스의 단계 2는, 예를 들어 콘텐츠를 포함하는 소스 섹션의 메모리에 의한 수신; 후속 클라이언트에 의한 로그온; 및 어떤 클라이언트에 의해 이전에 액세스된 콘텐츠에 대한 후속 클라이언트로부터의 요청에 의해 개시될 수 있다.
일부 실시예들에서, 본 발명의 시스템 및 방법들은 특정 조건들이 만족될 때에만 특정 단계들을 수행하는 프로세스를 통해 서버 기능성을 더 최적화한다. 예를 들어, 단계 2 컴파일이 완료될 때, 결과적인 섹션은 이전의 대응 섹션과 비교될 수 있고 어떤 변경들이 검출될 수 있다. 단계 3 컴파일 및 클라이언트에 변경된 부분들만을 송신함으로써, 단계 3에서 처리되는 데이터가 최소화된다.
특정 양상들에서, 본 발명은 하나 이상의 프로세서들에 의해, 콘텐츠를 포함하는 소스 섹션을 수신하고 그것을 저장하는 단계, 소스 섹션을 판독하여 동적 섹션에 기록하는 단계, 그후 그것을 컴파일하는 단계, 그리고 컴파일된 섹션을 클라이언트 큐에 송신하는 단계 각각을 행하는 것을 포함하는 콘텐츠 관리를 위한 컴퓨터 기반 방법을 제공한다.
본 방법은 코어 데이터베이스 내에 그룹 또는 개별 데이터 아이템을 저장하고 그리고 데이터 아이템을 포함하기 위하여 동적 섹션을 기록하거나 컴파일된 섹션을 컴파일하기 위해 하나 이상의 프로세서들을 사용하는 것을 더 포함한다.
일부 실시예들에서, 본 방법은 하나 이상의 프로세서들에 의해, 컴파일 결과를 이전의 컴파일 결과와 비교하는 단계 및 변경된 부분만을 포워드 송신하는 단계를 더 포함한다.
본 방법은 섹션을 저작하기 위한 액세스를 생성하는 프로덕션 서버 또는 애플리케이션을 제공하는 것을 포함한다. 상기 액세스는 웹 인터페이스를 통해 될 수 있다. 상기 섹션은, XML 포맷으로 생성, 저장, 및 송신될 수 있다. 상기 섹션은 동적 섹션으로 기록될 수 있고 이후 복수의 바이너리 패킷들로 구성된 컴파일된 섹션으로 컴파일될 수 있으며, 상기 복수의 바이너리 패킷들이 클라이언트에 전달될 콘텐츠를 포함하도록 된다.
도 1은 클라이언트 네비게이션의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 2는 콘텐츠가 이미 존재하는 클라이언트 네비게이션의 결과로서 로직 시퀀스에 따른 다중-단계 콘턴츠 준비를 도시한다.
도 3은 프로덕션 서버 상에서 변하는 콘텐츠의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 4는 스케줄링된 이벤트 또는 수동적으로 송신된 이벤트와 같은 이벤트들의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 5는 본 발명의 특정 실시예들에 따른 시스템들의 블록도를 제공한다.
1. 개괄
본 발명은 일반적으로, 콘텐츠 관리 시스템에 대한 휴대성(handheld performance), 응답성 및 신뢰성을 최적화하는, 다중-단계화 및 파티셔닝된 클라이언트/서버 콘텐츠 준비 프로세스를 제공한다.
본 명세서에서는, 클라이언트/서버 콘텐츠 관리 시스템으로 하여금 콘텐츠 및 행동(이하에서는 콘텐츠 앱으로 칭함)의 휴대기기로의 전달을 속도, 응답성, 및 신뢰성에 관하여 최적화할 수 있게 하는 다중-단계의 파티셔닝된 콘텐츠 준비 프로세스가 기술된다. 콘텐츠 앱 구성 부분(섹션으로 칭해짐)은 빠른 액세스를 위해 서버 상의 메모리에 캐시된다. 변경된 콘텐츠 앱 섹션들 또는 휴대 기기 상의 네비게이션된 타겟에 직접 관련 있는 콘텐츠 앱 섹션들만이 준비되어 클라이언트에게 송신되며, 따라서 소비되는 데이터 대역폭이 최소화된다. 섹션들은 데이터가 서버 상에서 변경된 결과로서 클라이언트에게 실시간으로 푸시될 수 있고 (또는 원한다면 수동적으로 푸시될 수 있고) 따라서 클라이언트가 데이터 검색을 시도할 필요를 없애준다. 또한, 서버-측 준비 단계들 동안에 발생할 수 있는 문제들로부터 클라이언트 연결성 및 상호작용성이 격리되므로, 클라이언트 연결성과 콘텐츠 준비 사이의 논리적 파티셔닝은 클라이언트에 대한 신뢰성을 증가시켜준다.
특정 양상들에서, 본 발명은 일반적인 클라이언트/서버 콘텐츠 관리 시스템을 제공한다. 특정 실시예들에서, 본 발명은 휴대기기로의 콘텐츠 전달을 최적화한다.
클라이언트에 전달된 콘텐츠는 서버-측에서 콘텐츠를 포함하는 하나 이상의 콘텐츠 섹션들로서 시작한다. 특정 실시예들에서, 오브젝트는 XML 문서(document)이다. 이 섹션들은, 예를 들어, XML로서, 콘텐츠 프로듀서에 의해 기록된다. 섹션들은, 예를 들어 스크린들 사이의 네비계이션 또는 사용자 입력들에 어떻게 응답할지를 포함하는 행동; 예를 들어 스크린 레이아웃의 양상들 또는 어떤 실제 위젯이 스크린들 상에 존재하는지를 포함하는 외관; 및 예를 들어, 실제 이미지, 사용자 입력 텍스트 데이터, 저작된 텍스트 데이터, 또는 RSS 피드들에 대한 참조를 포함하는 실제 데이터를 기술하는 요소들을 포함한다. 이들 요소들이 협력하여 "콘텐츠 및 행동"을 구성한다고 일컬어질 수 있다.
이 "콘텐츠 및 행동"은 앱 내의 앱으로서 여겨질 수 있다. 외부 앱은 주어진 플래폼(예컨대, Java ME 클라이언트 또는 iPhone 앱)에 대해 실행가능한 (일회 저작된(one-time authored)) 핸드셋이고, 반면 "콘텐츠 및 행동"은 프로듀서에 의해 생성된 것과 같은 내부 (또는 콘텐츠) 앱이다. 내부 앱은 서버 측의 다중-단계 콘텐츠 준비 프로세스 및 실행가능한 (외부) 클라이언트와의 상호작용의 조합에 의해 실행가능하고 실시간 배포가능(distributable)하게 만들어진다.
본 발명은 대부분의 타입의 모바일 디바이스에 대해 완전한(full) 그리고 실시간인 상호작용성을 제공하는 콘텐츠 관리 시스템을 제공한다. 본 발명의 시스템은 완전한 그리고 실시간인 상호작용을 갖고, 콘텐츠의 생성, 관리, 저장, 프레젠테이션, 개정, 및 디바이스 사용자에게로의 전달을 가능하게 한다. 특정 실시예들에서, 콘텐츠 생성은 XML-기반 포맷을 이용하여 쉽게 행해지고, 시스템은 대부분의 모바일 디바이스 플래폼(즉, Java, 심비안, 윈도우즈 모바일, 블랙베리, 안드로이드, 아이폰 및 기타)을 지원하며 새로운 플래폼들이 발생됨에 따라 새로운 플래폼들에 쉽게 적응가능하다.
본 발명의 시스템은 세 개의 부분들, 즉, 콘텐츠 생성 및 관리 를 위한 웹 인터페이스 및 최종 사용자 데이터 분석; 대부분의 코드(bulk of the code)가 상주하며 콘텐츠 준비 및 데이터 저장이 수행되는 게이트웨이 서버; 및 콘텐츠를 전달하고 콘텐츠와의 상호작용을 허용하도록 최종 사용자 디바이스 상에서 실행되는 하나 이상의 클라이언트 애플리케이션들을 포함한다.
특정 실시예들에서, 콘텐츠는 표준 브라우저를 통해 액세스되는 웹 인터페이스를 사용하여 XML 파일들로서 생성된다. 콘텐츠는 게이트웨이 서버에 섹션으로서 업로드되고 그리고 클라이언트 애플리케이션을 통해 사용자에게 전달되기 위하여 패킷 포맷으로 클라이언트 섹션으로서 출력된다. 웹 인터페이스는 단독형(stand-alone) 애플리케이션, 예컨대 Tomcat과 같은 Java 서블릿 콘테이너(Java servlet container) 상에 마운팅된 단독형 애플리케이션일 수 있다. 웹 인터페이스와 게이트웨이 서버 사이의 통신은 전용의 TCP/IP 소켓 연결을 통해 행해질 수 있다.
특정 실시예들에서, 게이트웨이 서버는 Java2 스탠다드 에디션을 사용하여 구축된 시스템이고, 일부에서는 Java2 엔터프라이즈 에디션 피쳐들이 또한 사용된다. 서버 시스템이 몇개의 개별 애플리케이션들로 분할된다. 각각의 애플리케이션은 그 스스로(on its own) 실행될 수 있거나, 가상 머신을 사용하여 모두 함께 실행될 수 있다. 게이트웨이 서버는 TCP/IP 소켓 연결과 내부적으로 그리고 외부적으로 모두 통신한다. 데이터가 단순 패킷 포맷(simple packet format)을 사용하여, 패킷들로서 내부적으로 송신된다. 프로덕션 측에서의(즉, 웹 인터페이스를 사용한) 통신은 (XML 패킷들의 형태로) XML을 사용하여 행해진다. 서버 시스템은 또한 최종 사용자 클라이언트 애플리케이션과 통신할 때 패킷 포맷을 사용한다.
모바일 디바이스 상에서 실행되는 클라이언트 애플리케이션은, 비-Java 플래폼(예컨대 아이폰) 및 비-MIDP 플래폼(예컨대 안드로이드)에도 포팅되어 왔으나, 일반적으로 Java ME MIDP 애플리케이션이다. 클라이언트 애플리케이션은 사용가능성에 따라, TCP/IP 소켓 연결(선호됨) 또는 HTTP(폴백(fallback)) 중 하나를 통해 게이트웨이 서버와 통신한다. 클라이언트 애플리케이션은 프로젝트-특정 플래폼 및 기술(즉, Java, 심비안, 윈도우즈 모바일, 블랙베리, 안드로이드, 아이폰 및 기타)에 따라, 많은 변형으로 형성될 수 있다. 새로운 핸드셋 플래폼들이 미래에 생성되면, 본 발명의 시스템은 또한 상대적으로 간단하게 이들 새로운 핸드셋 플래폼들에 클라이언트 애플리케이션을 포팅할 것이다. 추가적으로, 본 시스템의 강점들 중 하나는 시스템이 개별 프로젝트의 필요 및 요구에 따라 쉽게 조정될 수 있다는 것이다.
클라이언트 애플리케이션은 그것이 놓인 특정 디바이스에 대해 조정된다. 이와 관련하여, 클라이언트 애플리케이션은 "외부 앱(outer app)"처럼 기능한다. 클라이언트 애플리케이션은 클라이언트 형태로 디바이스에 시스템에 의해 전달된 콘텐츠를 기능화한다.
웹 인터페이스를 사용하여 수행되는 콘텐츠 생성이 프로덕션 서버에서 발생한다. 콘텐츠 전달은, 프로덕션 서버로부터 게이트웨이 서버를 통해 그리고 클라이언트 애플리케이션으로, 다운로드 또는 스트리밍 섹션을 통해 달성된다. 배경 이미지, 텍스트, 컬러, 및 레이아웃이 모두 프로덕션 서버에 의해 그리고 실시간으로 완전히 제어될 수 있다. 레이아웃의 정밀 튜닝은 클라이언트 디바이스 자체에 의해 처리된다.
본 발명의 시스템은 본래 Java ME를 위해 개발되었다. 특정 실시예들에서, 시스템은 Java ME 표준의 모든 이점을 취한다. 게이트웨이 서버로 업로드될 수 있는 이미지, 오디오 및 비디오의 캡쳐뿐만 아니라, SMS, MMS, 및 다이얼링을 포함하는 모바일 텔레폰의 모든 보통의 피쳐들이 사용될 수 있다. 아이폰 및 다른 터치스크린 디바이스들의 도입으로, 시스템이 이들 디바이스들의 사용가능한 추가의 피쳐들을 지원하도록 확장되었다.
상호작용성은 본 발명의 시스템의 주요 피쳐이고, 많은 입력 타입이 클라이언트 애플리케이션에 의해 용이하게 될 수 있다. 시스템의 사용자들이 데이터 아이템들을 공급할 수 있고, 이 데이터 아이템들은 게이트웨이 서버 상의 코어 데이터베이스에 저장될 수 있다. 사용자 데이터 아이템은, 사용자의 이름 또는 채팅 메시지와 같은 텍스트를 포함할 수 있다. 표준 텍스트 및 유사한 입력에 부가하여, 사용자는 또한 사진을 찍고, 비디오를 캡쳐하고, 오디오를 레코딩하고 그리고 결과적인 멀티미디어 파일을 서버에 송신되고 저장되는 입력으로서 업로드한다.
사용자-공급 데이터 아이템들은 콘텐츠를 동적으로 발생시키기 위한 입력으로서 사용될 수 있으며, 따라서 이 입력은 하나 이상의 사용자들에게 전달되는 콘텐츠 섹션들에 통합될 수 있다. 특정 실시예들에서, 데이터 아이템들은 최종 사용자에 대해 개별적(individual)(즉, 사용자의 패스워드, 또는 사적 메시지)이다. 특정 실시예들에서, 사용자의 입력이 그룹 데이터 아이템이 되고 복수의 사용자들에게 전달되는 콘텐츠(예를 들어, 사진 공유 또는 그룹 채팅)에 통합된다. 사용자 입력 데이터 아이템들은 그것이 배포됨에따라 콘텐츠에 동적으로 통합될 수 있고, 그럼으로써 실 세계 이벤트들에 의해 실시간으로 영향을 받는 최종 사용자 앱을 생성한다.
게이트웨이 애플리케이션은, 콘텐츠가 최종 사용자에게 직접 푸시될 수 있게 하여, 상기 콘텐츠가 웹 인터페이스를 통해 갱신되어 자동적으로 송신(send out)될 수 있게 한다. 갱신은 또한 입력 요청에 응답하여 발생할 수 있다.
종종 상당히 많은 그리고 복잡한 콘텐츠 앱 콘텐츠 및 행동(또는 간단히, "콘텐츠")를 적시에(timely), 즉각적으로(responsive) 그리고 신뢰성있는(reliable) 방식으로 클라이언트에게 전달하기 위하여, 본 시스템은 수개의 행동들을 보이는 독점적인(proprietary) 다중-단계(multi-phased) 준비 프로세스 및 방법을 사용한다. 상기 시스템은 클라이언트의 네비게이션된 타켓에 직접적으로 관련된 콘텐츠만을 송신한다. 상기 시스템은 클라이언트가 콘텐츠를 최종 로딩한 때부터 변경된 콘텐츠만을 송신한다(또는 시스템은 필요하다면 특정 콘텐츠가 푸시될 수 있게 할 수 있다). 시스템은 이전에 준비된 콘텐츠가 다시 불필요하게 준비되지 않게 한다. 시스템은 클라이언트의 콘텐츠의 실시간 푸시를 가능하게 한다. 시스템은 하드웨어/소프트웨어 구조에서 신뢰가능한 상호작용 및 유연성을 생성하기 위하여, 클라이언트 연결 및 콘텐츠 준비를 상당 정도까지(to a great degree) 분리(de-couple)한다.
도 1 내지 4는 콘텐츠 준비를 위한 다양한 시나리오들에서의 이벤트의 시퀀스를 도시한다.
특정 실시예들에서, 본 발명은 세 개의 단계들을 수반하는, 콘텐츠를 사용자에게 전달하기 위한 시스템 및 방법들을 제공한다. 단계 1은 콘텐츠를 포함하는 소스 섹션을 획득하고 외부 데이터로 컴파일하는 것을 수반한다. 단계 2는 단계 1로부터의 결과적인 섹션을 얻고 사용자-생성 데이터로 컴파일하고 그리고 어느 파트가 변경되었는지를 검출하고 그것들을 단계 3을 위해 포워드 송신하는 것을 수반한다. 특정 실시예들에서, 단계 2는 동적 섹션이라 칭해지는 것을 생성한다. 단계 3은 각각의 개별 사용자를 위해 상기 동적 섹션을 재컴파일하고, 한편으로 그것을 일련의 바이너리 패킷들로 구성된 컴파일된 섹션으로 재포맷하고 동시에 그것을 사용자에게 큐를 통해 송신하는 것을 포함한다.
본 발명의 시스템 및 방법은 준비 및 전달을 최적화하기 위하여 전달 기능들을 서로 다른 단계들로 분리한다. 프로덕션 서버와 게이트웨이 서버 사이의 논리적 분리에 의해 준비가 전달로부터 파티셔닝된다. 단계 1에서 소스 섹션 컴파일이 프로덕션 서버 상에서 발생한다. 단계 1에서 컴파일된 섹션이 이후 게이트웨이 서버로 전송된다.
단계 2는 새로 저작된 콘텐츠-포함 소스 섹션을 획득하는 것 및 그것을 사용자 그룹으로 배포될 어떤 콘텐츠와 머징하는 것을 수반한다. 단계 2는 게이트웨이 서버 상에서 발생하고 동적 섹션을 생성한다. 단계 2는 또한 변경된 것을 검출하고 그것들만을 포워드 송신하는 것을 수반한다.
동적 섹션이 단계 3에서 재컴파일되며, 선택된 최종 사용자들(즉, 상기 동적 섹션을 요청한 최종 사용자들, 또는 이들을 위하여 상기 동적 섹션이 변경된 최종 사용자들)만을 위하여, 클라이언트에게 즉시 스트리밍되는 컴파일된 섹션을 생성한다.
예를 들어, 회사는, 사용자들로 하여금 콘테스트에 참여하게 하는 앱 - 이 콘테스트에서 상기 사용자들은 야구 게임을 시청하고, 그 야구 게임 동안에 새 플레이어가 타석에 나올 때마다, 그 플레이어가 점수를 낼지 여부를 추측함 - 을 개발할 수 있다. 이 예에서, 사용자들은 10개의 티켓으로 구성된 경품 팟(prize pot)으로부터 프리 티켓을 위해 경합할 수 있다. 사용자가 정확하게 추측할 때마다, 사용자는 경품 팟이 고갈될 때까지 프리 티켓을 얻는다. 이 예에서, 플레이어가 타석에 나올 때마다, 플레이어의 이름을 포함하는 파일이 프로덕션 서버에 기입된다. 상기 파일은 이후 소스 섹션으로 컴파일되고(단계 1) 게이트웨이 서버로 송신된다. 게이트웨이 서버에서, 타자(batting player)의 이름을 포함하는 소스 섹션 및 남아 있는 프리 티켓의 수의 카운트 둘 모두가 동적 섹션으로 컴파일된다(단계 2). 이후, 콘텐츠에 참여하는 각각의 사용자에 대해, 동적 섹션이, 사용자의 이름 및 점진적 스코어(cumulative score)에 대한 정보와 함께, 큐를 통해 사용자 클라이언트에 스트리밍되는 바이너리 패킷들로 구성되는 컴파일된 섹션으로 컴파일될 수 있다(단계 3).
이 시나리오는 클라이언트 개시 활동(client initiated activity)(예컨대, 로그 온, 새 스크린에 대한 네비게이팅, 메뉴 아이템의 선택 등)의 결과로서 발생하거나, 또는 콘텐츠가 서버 상에서 변경되었기 때문에(예컨대, RSS 피드, 프로듀서가 콘텐츠 레이아웃, 속성, 이미지, 네비게이션 명령 타겟(스크린 플로우) 등을 변경했음), 또는 스케줄링된 또는 애드 혹 이벤트가 발생했기 때문에 발생할 수 있다.
특정 실시예들에서, 시스템이 프로덕션 서버를 제공한다. 프로덕션 서버는 이미지 및 RSS 피드와 같은 콘텐츠 앱에 대해 일반적(universal)인 것(즉, 앱의 모든 사용자들에 대해 동일함)으로 고려될 수 있는 자원 및 준비를 처리한다. 이는, 단계 1 콘텐츠 준비로서 알려져 있다. 상기 단계 1 콘텐츠 준비가 (개별 사용자의 입력, 또는 복수의 사용자들에 의해 생성되며 복수의 사용자들에 대해 공통적인 채팅과 같은) 사용자-생성 데이터, 또는 클라이언트 연결성을 다루지 않는다는 것에 또한 주목하여야 한다.
특정 실시예들에서, 시스템은 게이트웨이 애플리케이션을 제공한다. "게이트웨이 애플리케이션"은 시스템에 의해 제공되는 기능의 세트를 지칭하며, 게이트웨이 애플리케이션은, 하나 이상의 컴퓨터를 포함할 수 있는 전용 게이트웨이 서버에 의해 제공되거나, 이 기능이 하드웨어의 조합에 걸쳐 분포될 수 있다. 본 발명은 특정 환경의 필요에 부응하기 위하여, 다수의 게이트웨이 애플리케이션들이 있을 수 있다는 점에서 스케일가능하다. 일반적으로, 게이트웨이 애플리케이션 또는 게이트웨이 서버가 논의되나, 게이트웨이 애플리케이션의 기능이, 하나 이상의 서버들에 의해, 또는 하나 이상의 가상 머신들 내에서 선택적으로 제공될 수 있는, 하나 이상의 애플리케이션들에 의해 제공되는 실시예들을 포함하도록 의도된다.
게이트웨이 애플리케이션(들)은, 위에서 언급된 사용자 입력 또는 채팅(단계 2의 콘텐츠 준비)과 같은 "그룹(grouped)" 최종 사용자 생성 데이터, 및 또한 사용자 이름 및 나이와 같은 개별 최종 사용자 특정 데이터(단계 3 콘텐츠 준비)에 관련된 클라이언트 연결성, 자원, 및 준비를 처리한다.
도 1은 클라이언트 네비게이션의 결과로서 로직 시퀀스에 다른 다중-단계 콘텐츠 준비를 도시한다.
도 2는 콘텐츠가 이미 존재하는 클라이언트 네비게이션의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 3은 프로덕션 서버 상에서 변하는 콘텐츠의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 4는 스케줄링된 이벤트 또는 수동적으로 송신된 이벤트와 같은 이벤트들의 결과로서 로직 시퀀스에 따른 다중-단계 콘텐츠 준비를 도시한다.
도 5는 본 발명의 특정 실시예들에 따른 시스템의 블록도를 제공한다.
특정 실시예에서, 본 발명은 입/출력 모듈(102)을 통해 프로듀서에 의해 액세스되는 프로덕션 모듈(106)을 포함한다. 섹션(112a-112n)들이 프로덕션 모듈을 통해 저작되고, 하나 이상의 게이트웨이 모듈들(104)로 송신되며, 상기 게이트웨이 모듈들(104)이 상기 섹션들을 컴파일한다. 각각의 섹션은 하나 이상의 콘텐츠 오브젝트(100)를 포함할 수 있다. 선택적 엔트리 모듈(114) 및 선택적 사용자 모듈(115)이 디바이스(150) 상의 클라이언트 앱(137), 디바이스(152) 상의 클라이언트 앱(136), 및 네트워크(120) 상의 하나 이상의 게이트웨이(104) 가운데서 통신을 조정한다. 일부 실시예들에서, 각각의 모듈은 애플리케이션이다. 일부 실시예들에서, 각각의 모듈은 전용 서버에 의해 제공된다.
클라이언트 앱(136)은 하나 이상의 컴파일된 오브젝트들(138)을 포함하는 섹션(154)을 수신한다. 모듈(132)은 일반적으로, 애플리케이션 프로그래밍 인터페이스(API)(134)를 제공하는 Java 또는 iOS와 같은 플래폼을 포함한다. 클라이언트 앱(136)은 모델 뷰 제어기(MVC)를 포함하는바, 상기 모델 뷰 제어기(MVC)는 서버와의 통신을 제어하고; 콘텐츠 오브젝트(138)가 서버(110)로부터 스트리밍됨에 따라 콘텐츠 오브젝트(138)를 재생성하고; 하나 이상의 콘텐츠 오브젝트(138)와 어떤 다른 콘텐츠 오브젝트(들) 사이의 상호작용을 제어하고; 그리고 하나 이상의 콘텐츠 오브젝트(들)을 네이티브 하드웨어(API)(134)와 인터페이스시킨다.
클라이언트 앱(137)은 적어도 하나의 컴파일된 오브젝트(139)를 포함하는 섹션(155)을 수신한다. 모듈(133)은 일반적으로 애플리케이션 프로그래밍 인터페이스(API)(135)를 제공하는 Java 또는 iOS와 같은 플래폼을 포함한다. 클라이언트 앱(137)은 모델 뷰 제어기(MVC)(131)를 포함하며, 상기 모델 뷰 제어기(MVC)(131)는 서버와의 통신을 제어하고; 콘텐츠 오브젝트(139)가 서버(110)로부터 스트리밍됨에 따라 적어도 하나의 콘텐츠 오브젝트(139)를 재생성하고; 적어도 하나의 콘텐츠 오브젝트(139)와 어떤 다른 콘텐츠 오브젝트(들) 사이의 상호작용을 제어하고; 그리고 적어도 하나의 콘텐츠 오브젝트를 네이티브 하드웨어(API)(135)와 인터페이스시킨다.
시스템(100)은 다수의 모듈들을 포함한다. 특정 실시예들에서, 이들은 서버(110) 내에 포함된다. 대안적인 실시예들에서, 각각의 모듈이 전용 서버에 의해 제공되거나, 일부 모듈들, 예컨대 게이트웨이 모듈(104), 엔트리 모듈(114), 및 사용자 모듈(115)이 서버(110) 상에 애플리케이션들로서 제공되고, 반면 프로덕션 모듈(106)은 별도의 전용 서버 상에 제공된다. 일부 실시예들에서, 입/출력 모듈(102)은 웹 인터페이스이다.
일부 실시예들에서, 서버(110)는 머신으로 하여금 본 명세서에서 논의되는 하나 이상의 방법론들을 수행하게 하는 명령어들의 세트를 포함하는 컴퓨터-기반 머신이다. 다양한 실시예들에서, 머신은 단독형 디바이스로서 동작하거나 다른 머신들에 연결(예를 들어, 네트워크됨)될 수 있다. 네트워크형 배치(networked deployment)에서, 머신은 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트 머신의 용량(capacity) 내에서 동작하거나, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 예를 들어, 특정 환경에서, 프로덕션 모듈(106)이 클라이언트 머신이고 게이트웨이 모듈(104)이 클라이언트와 통신하는 서버 머신(110)에 의해 제공된다.
다양한 실시예들에서, 본 발명의 머신들은, 본 명세서에 설명된 방법들을 수행하기 위하여, 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), PDA(Personal Digital Assistant), 셀룰러 폰, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 또는 그 머신에 의해 취해져야 하는 동작들을 특정하는 (순차적인 또는 그 반대인) 명령어들의 세트를 실행시킬 수 있는 어떤 머신일 수 있다. 또한, 서버(110)가 단일 머신으로서 예시되었으나, 용어 "머신"은 또한 본 명세서에서 논의되는 어떤 하나 이상의 벙법들을 수행하기 위한 명령어들의 세트(또는 복수의 세트들)를 개별적으로 또는 공동으로 실행하는 어떤 머신들의 컬렉션일 수 있다.
당업자는, 본 발명의 방법의 수행에 필요한 또는 가장 적합한 바에 따라, 디바이스(150, 152)가 또한 컴퓨터 머신이라는 것을 인지할 것이다. 선호되는 실시예에서, 이들은 각각 스마트폰, 아이폰, 태블릿 컴퓨터, 랩탑, PDA, 컴퓨터, 또는 e-리더기와 같은 휴대형 컴퓨팅 디바이스이다.
당업자는, 본 발명의 방법의 수행에 필요한 또는 가장 적합한 바에 따라, 본 발명의 컴퓨터 시스템 또는 머신이, 버스를 통해 서로 통신하는, 하나 이상의 프로세서(예컨대, 중앙 처리 유닛(CPU) 그래픽 처리 유닛(GPU) 또는 이 둘 모두), 메인 메모리, 및 정적 메모리를 포함한다는 것을 인지할 것이다. 본 발명에 따른 컴퓨터 시스템 또는 머신은 또한 비디오 디스플레이 유닛(예컨대 액정 디스플레이(LCD) 또는 캐쏘드 레이 튜브(CRT))을 더 포함할 수 있다. 본 발명에 따른 컴퓨터 시스템 또는 머신은 또한 글자 및 숫자 입력(alphanumeric input) 디바이스(예컨대 키보드), 커서 제어 디바이스(예컨대 마우스), 디스크 드라이브 유닛, 신호 발생 디바이스(예컨대 스피커), 터치스크린, 가속도계, 마이크로폰, 셀룰러 무선 주파수 안테나, 및 예를 들어 네트워크 인터페이스 카드(NIC), 와이파이 카드, 또는 셀룰러 모뎀일 수 있는 네트워크 인터페이스 디바이스를 포함할 수 있다.
본 발명에 따른 디스크 드라이브 유닛은 본 명세서에 기술된 어떤 하나 이상의 방법 또는 기능을 사용하는 하나 이상의 명령어들의 세트들(예컨대, 소프트웨어(424))이 저장된 머신-판독가능 매체를 포함할 수 있다. 소프트웨어는 또한 컴퓨터 시스템에 의한 실행 중에 메인 메모리 내에 및/또는 프로세서 내에 완전히 또는 적어도 부분적으로 상주할 수 있고, 상기 메인 메모리 및 프로세서가 또한 머신-판독가능 매체를 포함할 수 있다.
소프트웨어는 또한 네트워크 인터페이스 디바이스를 통해 네트워크(120) 상에서 전송 또는 수신될 수 있다.
머신-판독가능 매체가, 예시적인 실시예에서 단일 매체일 수 있으나, 용어 "머신-판독가능 매체"는 하나 이상의 명령어들의 세트를 저장하는 단일 매체 또는 복수의 매체(예컨대, 중앙화된 또는 분산된 데이터베이스, 및/또는 관련 캐시 및 서버)를 포함하는 것으로 여겨질 수 있다. 용어 "머신-판독가능 매체"는 또한 그 머신에 의한 실행을 위해 명령어들의 세트를 저장, 엔코딩 또는 운반할 수 있는 그리고 그 머신으로 하여금 본 발명의 어떤 하나 이상의 방법을 수행하게 하는 어떤 매체를 포함하는 것으로 여겨질 수 있다. 용어 "머신-판독가능 매체"는 따라서, 고체-상태 메모리(예컨대, 가입자 식별 모듈(SIM) 카드, 보안 디지털 카드(SD 카드), 또는 마이크로 SD 카드), 광학 및 자기 매체, 및 어떤 다른 유형의(tangible) 저장 매체를 포함하는 것으로 여겨져야 하나, 이들로 제한되는 것은 아니다.
2. 섹션들
특정 실시예들에서, 본 시스템의 콘텐츠는 "섹션"들로 조직화(organize)된다. 섹션은 콘텐츠의 퀀텀(quantum)이다. 특정 실시예들에서, 섹션은 완전한 모바일 애플리케이션, 또는 애플리케이션의 부분을 기술하는 XML 파일들이다. 큰 애플리케이션들이 속도를 향상시키고 대역폭을 절감하기 위하여 몇 개의 섹션들로 분할될 수 있다. 이는 애플리케이션의 부분이 종종 갱신될 수 있게 해주며(예컨대, 채팅), 다른 섹션들이 정적(static)으로 유지되게 한다.
각각의 섹션은 섹션 헤더 내에 특정된 고유 id를 갖는다. 섹션들은 그들의 id들을 사용하여 서로 연결될 수 있다. 섹션들은 XML 요소들로서 저장되고, 프로덕션 서버에 의해 처리될 때 Java SAX 파서를 중심으로 형성된 XML 프레임워크를 사용하여 오브젝트들로 파싱(parsing)된다.
네 가지 타입의 섹션, 즉 1) 웹 인터페이스를 통해 프로듀서에 의해 오픈되고 상호작용되는 소스 섹션 2) 최종 사용자에 의해 오픈되고 상호작용될 수 있는 동적 섹션 3) 최종 사용자에 의해 오픈되고 상호작용될 수 있는 동적 섹션 4) 서버로 하여금 클라이언트 애플리케이션으로의 전달을 위해 컴파일 및 준비된 컴파일된(complined) 섹션이 존재한다. 특정 실시예들에서, 섹션들은 표 1에 열거 및 기술된 9개의 엘리먼트들을 포함한다.
Figure 112013040572804-pct00001
섹션들은 클라이언트 애플리케이션에 의해 다운로딩된다. 게이트웨이 서버는 어떤 섹션들을 최종 사용자가 오픈되게 유지하는지를 추적하여, 그것이 클라이언트 애플리케이션을 게이트웨이 서버 상의 콘텐츠와 실시간으로 동기화되게 유지할 수 있게 한다. 게이트웨이 서버는 모바일 애플리케이션 상의 대응하는 섹션들에 갱신들 및 이벤트들을 푸시한다. 클라이언트 애플리케이션은 오픈되지 않은 섹션들에 대해 어떠한 데이터, 갱신, 또는 이벤트들도 송신하지 않는다. 대신에, 클라이언트 애플리케이션이 섹션을 오픈할 때마다, 섹션이 전부 서버로부터 다시 다운로딩되어, 새로-오픈된 섹션이 최신(up to date)의 섹션이도록 한다.
섹션 콘텐츠는, 콘텐츠 오브젝트(하기에서 더 자세히 논의됨); 콘텐츠 아이템; 및 자원을 포함한다.
특정 실시예들에서, 콘텐츠 오브젝트들은 텍스트 박스, 메뉴, 커맨드 및 다른 오브젝트들-이들은 콘텐츠 아이템이 어떻게 최종 사용자에 의해 상호작용될 수 있는지를 포함하는 콘텐츠 아이템의 상세한 설명을 포함함-일 수 있다. 2가지 타입의 콘텐츠 오브젝트, 즉, 서버 상에서만 사용되는 "고-레벨" 추상 오브젝트; 및 클라이언트 애플리케이션으로 전달될 추상 오브젝트로부터 컴파일되는 "저-레벨" 구체적 오브젝트(concrete object)가 존재한다. 콘텐츠 아이템은 더 간단한, 직접 디스플레이될 수 없는 콘텐츠-지향 구조(construct)(예컨대, 아티클들)이다. 콘텐츠 아이템은 서버 오브젝트로서 파싱된다. 자원들은 클라이언트 애플리케이션들에 의해 사용되는 미디어 파일(예컨대, 이미지, 비디오, 오디오)이다. 섹션들은 필요한 곳에서 자원 파일들에 링크될 수 있다.
섹션들은 이것들이 모바일 애플리케이션으로 송신되기 전에 서버에서 컴파일되어, 국부적으로 클라이언트 디바이스에서 가능한한 적은 프로세싱이 요구된다. 컴파일이 단계 3에서 달성되어, 서로 다른 고-레벨 오브젝트들을 저-레벨 오브젝트들로 대체한다.
첫번째로, 최종 사용자에 의존하지 않는 고-레벨 오브젝트들이 컴파일되고 삽입된다. 두번째로, 최종 사용자에 의존하는(user-dependent) 고-레벨 오브젝트들이 컴파일된다. 세번째로, 최종 사용자에 의존하는 콘텐츠가 엑세스 레벨들을 이용하여 삽입되어 최종 사용자들에게 의도되지 않은 콘텐츠를 제어 및/또는 제거한다.
섹션이 컴파일되었으면, 최종 사용자들에 의한 소비/상호작용을 위해 클라이언트 애플리케이션으로 전달될 준비가 되었다.
상술한 설명으로부터 알 수 있는 바와 같이, 섹션들은 본 발명에 따른 시스템들을 위한 기본적인 콘텐츠의 퀀텀을 제공한다. 본 시스템의 콘텐츠는 고 레벨의 조직화가 다중-기능 콘텐츠들로의 섹션들을 구성할 때, 또는 섹션들이 패킷들(예컨대, 패킷들이 최종 사용자들에게 컴파일된 섹션들로 전송될 때)로 포맷될 때 조차도, 섹션들로 조직화된다. 섹션들은 클라이언트에 의해 하나의 단위로서 처리되어야 하는 위젯들의 논리적 그룹들을 나타낸다. 빈번하게 액세스되는 스크린 또는 데이터가 그들 소유의 섹션들로 격리되어, 앱의 나머지를 영향받지 않게 유지하도록 콘텐츠 앱들이 분리될 수 있으므로, 섹션들은 클라이언트에게 콘텐츠의 적시의 전달을 가능하게 한다.
클라이언트가 로그온할 때, 요청된 섹션은 콘텐츠 앱에 디스플레이되는 초기 섹션인, 소위 "로비(lobby)"섹션이다. 로비는 클라이언트 구성에서 식별되는 것과 같은 애플리케이션의 도메인을 사용하여 식별된다. 이 도면에서, 로비는 누구에게도 선택된 적이 없었으며, 따라서 단계 1이 트리거된다.
마찬가지로, 섹션에 대한 네비게이팅이 이전에 어떤 다른 클라이언트에 의해 로딩되지 않았을 때, 네비게이션 커맨드에 의해 식별된 타겟이 게이트웨이로부터 프로덕션 서버 상의 단계 1 콘텐츠 준비로 패스될 것이다.
사용자가 새로운 섹션에 로그인 또는 네비게이팅할 때, 이들은 그 섹션에 대한 리스너로서 서버 상에 등록될 것이다(즉, 이들이 동적 섹션을 로딩하고, 그것을 동적 섹션으로 바꿀 것이다). 이는 변경된 또는 새로운 콘텐츠가 나중에 특정 클라이언트에 푸시되게 하는 주요 메커니즘이다. 등록된 리스너들만이 갱신을 수신할 것이며, 따라서 소비되는 대역폭을 최소화하고 클라이언트 응답을 최적화한다.
도 2는 타 클라이언트가 이미 로그온한 경우에 제2 클라이언트가 애플리케이션에 로그온하는 것, 또는 제2 클라이언트가 타 클라이언트에 의해 이미 액세스된 섹션에 액세스하는 것을 도시한다. 이 경우에, 오브젝트들은 메모리 내에 캐시되어 이미 존재하며, 즉시 단계 3으로 진행할 수 있다. 이는 다중-단계 콘텐츠 준비 프로세스에 의해 제공되는 주요 최적화들 중 하나를 보여준다.
도 3은 프로덕션 서버 상에서 변하는 콘텐츠의 결과로서 발생하는 이벤트들의 시퀀스를 도시한다. 이는, 예를 들어, 프로듀서가 콘텐츠 앱 내의 콘텐츠 레이아웃, 속성, 이미지, 또는 네비게이션 스크린 흐름의 변경들을 작성했기 때문에 또는 피드 매니저가 RSS 피드를 통해 자동적으로 검색된 콘텐츠를 가지기 때문에 발생할 수 있었다.
도 4는 서버 상에서 트리거된 이벤트의 결과로서 발생하는 이벤트들의 시퀀스를 도시한다. 이벤트들은 클라이언트 측에서의 특정 동작들을 트리거하는 (타겟 오브젝트들 및 콘텐츠 오브젝트들을 포함하는) 특정 메시지들이다. 이벤트에의해 트리거되는 특정 동작은, 예를 들어, 클라이언트로 하여금 새 스크린을 네비게이션하게 하는 것 또는 클라이언트 디바이스로 하여금 진동, 소리 재생 또는 이와 유사한 것을 하게 하는 것일 수 있다.
3. 이벤트, 퀴즈, 설문조사, 및 레포트
이벤트
특정 실시예들에서, 이벤트는 클라이언트에게 퀴즈 또는 설문조사에 참여할 기회를 주기 위하여 사용된다. 예를 들어, 이벤트가 프로덕션 서버에서 호출(invoke)되어, 궁극적으로 클라이언트 애플리케이션으로 하여금 클라이언트에게 퀴즈 또는 설문조사의 하나 이상의 질문들을 디스플레이하게 한다.
이벤트는 프로듀서에 의해 애드혹 방식으로 송신되거나, 외부 시작 신호(예컨대 수동적으로 신호되는 퀴즈 시작)와 관련되어 스케줄링된 관련 타임 코드들 (콘텐츠 프로듀서에 의해 저작됨)의 결과로서 타임코드 매니저에 의해 송신될 수 있다.
특정 실시예들에서, 본 발명의 시스템들은 이벤트들을 제공함으로써 본 발명에 고유한 기능성을 가져온다. 예를 들어, Java용으로 공개된 모바일 정보 디바이스 프로파일(MIDP) 규격에는 이벤트들과 같은 것이 존재하지 않는다. 이벤트들은 서버로 하여금 클라이언트 애플리케이션들의 그룹 또는 단일 클라이언트 애플리케이션을 제어할 수 있게 하고, 실질적으로 서버에 링크되고 서버에 의해 제어되는 모바일 디바이스들의 인트라넷인 것을 생성한다. 이벤트들은, 커맨드들과 마찬가지로, 오브젝트들을 호출하나, 커맨드들은 최종 사용자에 의해 발행되고, 이벤트들은 서버로부터 발행된다.
이벤트들은 고유 ID, 타겟 섹션 및 타겟 오브젝트를 포함하며, 상기 타겟 섹션 및 타겟 오브젝트는 함께 어느 섹션 내의 어느 오브젝트를 상기 이벤트가 호출해야 하는지를 규정하는 어드레스를 구성한다.
이벤트들은 또한 어떻게 및 언제 이벤트가 트리거되어야 하는지를 규정하는 시간 속성들을 포함할 수 있다. 이들 시간 속성들은, 지연(Delay), 발행 날짜(Issue Date), 및 발행된 날짜(Issued Date)를 포함할 수 있다. 이벤트들은 또한 시간 코드에 동기화되고, 서버에 의해 사용되어 서로 다른 종류의 라이브 및/또는 실시간 애플리케이션들을 드라이브할 수 있다. 이들 속성들은 특정된 디스플레이가능한 오브젝트를 소정(predefined) 시간에 전달하기 위하여 사용될 수 있다. 이벤트들은 또한 어떤 사용자들 또는 사용자 그룹들에 서버에 의해 타겟 섹션 및/또는 오브젝트가 송신될지를 제어하기 위한 액세스 레벨을 포함할 수 있다.
이벤트들은 네스팅된 콘텐츠 오브젝트를 포함할 수 있으며, 상기 네스팅된 콘텐츠 오브젝트들은 (이벤트와 함께) 서버에 의해 클라이언트 애플리케이션들로 송신될 것이다. 이는 이벤트들이 콘텐츠 전달에 사용될 수 있게 한다. 이는 소정 시간에 특정된 디스플레이가능한 오브젝트를 디스플레이하는데 사용될 수 있다.
이벤트들은 웹 인터페이스를 사용하여 프로듀서들에 의해 생성되거나 또는 특정 시간에 서버에 의해 자동적으로 생성될 수 있다. 이벤트들은 클라이언트 애플리케이션의 타겟 섹션을 그들의 디바이스들 상에서 오픈되게 한 최종 사용자들에게만 송신된다. 이벤트들은 라이브 게임 및 퀴즈를 드라이브하기 위하여 사용된다. 표 2는 이벤트에 포함된 정보를 열거한다.
Figure 112013040572804-pct00002
도 5에 도시된 바와 같이, 이벤트가 트리거될 때, 그것의 특정된 타겟 오브젝트가 호출된다.
다음의 XML은 본 발명의 특정 실시예에 따른 이벤트의 예를 제공한다.
<event target_section="1" target_object="TBox">
<textbox id="TBox" title="Sample" text="This is a sample text box">
<cmd id="back_cmd" target=" back"/>
</textbox>
</event>
이 예에서, 이벤트는 "1"의 id를 갖는 섹션 내의 오브젝트 main_menu를 현재 보고 있는 최종 사용자들에게 송신된다. 이벤트는 텍스트 상자인 TBox를 최종 사용자들에게 디스플레이한다.
이벤트는 텍스트 상자, 및 백 커맨드를 포함하여, 최종 사용자들로 하여금 그들이 텍스트 박스의 판독을 완료했을 때 main_menu로 되돌아갈 수 있게 한다.
시간 지연이 규정되지 않았으므로, 이벤트가 클라이언트 애플리케이션에 의해 수신되자마자(예를 들어, 실질적으로 즉시(수 밀리초 후)), 텍스트 "This is a sample text box"가 모바일 디바이스 상에 디스플레이될 것이다.
그러나, 이 예는 단지 설명의 목적을 위한 것이다. 본 발명의 이벤트들은 광 범위한 기능성을 제공한다. 특정 실시예들에서, 이들은 퀴즈 또는 설문조사를 개시 또는 진행하게 하는데 사용된다.
퀴즈
특정 실시예들에서, 본 발명은 퀴즈-스타일 게임을 생성하기 위한 시스템 및 방법을 제공한다. 퀴즈는 사용자에게 질문이 제시되고 정확한 대답에 대해 포인트를 수신하는 게임이다. 본 발명에 따른 퀴즈는 퀴즈 콘텐츠 오브젝트에 의해 나타내진다. 퀴즈는 질문들로 이루어진다. 질문들은 별개의 콘텐츠 아이템들로서 생성된다. 표 3은 대답이 어떤 포맷을 가질 것으로 예측되는지에 따른 서로 다른 타입의 질문들을 열거한다.
Figure 112013040572804-pct00003
서로 다른 타입의 질문들은 시스템에 의해 인식되는 서로 다른 종류의 사용자 입력에 직접 관련된다. 다중 선택 질문은 사용자가 대답으로서 하나 이상의 대안을 선택해야만 하는 선택가능한 대답(answer alternatives)을 포함한다. 단일 선택 질문 또한 선택가능한 대답을 포함하나, 사용자는 대답으로서 대안들 중 하나만을 선택할 수 있다.
퀴즈 스케줄에 따라 질문들이 제시된다. 스케줄들은 콘텐츠 아이템들일 수 있다. 퀴즈 스케줄은 각각의 질문이 디스플레이되어야 할 때를 위한 시간 스케줄이다. 퀴즈들은, 각 질문이 (언제 퀴즈가 시작될지에 관련된) 스케줄로 특정된 상대적 시간에 제시되는, 시간 기반 퀴즈들일 수 있다. 질문들은 또한 한 질문 후에 또 다른 질문이, 질문들 사이에 지연 없이, 제시될 수 있다. 퀴즈들은 또한 라이브일 수 있다. 라이브 퀴즈 게임은 퀴즈 스케줄에 따라 작동한다. 퀴즈는 특정 시간에, 및 질문이 사용자에게 보여지고 특정한 인터벌 후에 시작된다. 이는 정확한 시간들에 질문들을 디스플레이할 수 있게 스케줄이 만들어질 수 있도록, 스케줄이 사전에 합의될 것을 요구한다. 질문들을 제외하고는, 스케줄은 또한 퀴즈 텍스트 박스들을 포함할 수 있으며, 상기 퀴즈 텍스트 박스들은 정보를 제시하거나 또는 스코어를 디스플레이하는데 사용될 수 있다. 스케줄들은 또한 퀴즈 오브젝트 아이템들을 포함할 수 있는바, 상기 퀴즈 오브젝트 아이템들은 하나 또는 수 개의 콘텐츠 오브젝트들을 포함할 수 있다. 일부 실시예들에서, 텍스트 박스들 및 오브젝트 아이템들이 스케줄에 정의된 시간(또는 순서)에 디스플레이된다. 질문들이 입력 오브젝트로서 컴파일 되어 퀴즈가 특정되는 섹션과 함께 송신될 수 있다. 질문들은 퀴즈 스케줄에 의해 제어될 수 있다. 질문이 사용자에게 보여져야 할 때마다, 서버는 퀴즈 이벤트를 모바일 애플리케이션에 송신하며, 상기 모바일 애플리케이션이 질문을 나타내는 입력 오브젝트를 호출한다. 스케줄은 특정 시간에 자동적으로 시작되거나, 또는 웹 인터페이스로부터 수동적으로 시작될 수 있다.
Figure 112013040572804-pct00004
특정 실시예들에서, 본 발명은 TV 게임 쇼와 함께 사용될 수 있는 애플리케이션들을 제공하여, 시청자들로 하여금 상기 쇼 동안 라이브로 참여할 수 있게 한다. TV에서 질문들이 보여질 시간들에 대한 스케줄을 미리 생성함으로써, 사용자는 각각의 질문을 그것이 프로그램에 제시되는 것과 동일한 시간에 제시받을 것이다. 이는 사용자들로 하여금 쇼를 시청하는 동안 서로 경합(compete)할 수 있게 하여, 시청 중에 뷰어에게 인터랙티브한 경험을 제공한다.
특정 실시예들에서, 본 발명은 또한 점수를 계산하고 어떤 사용자들이 퀴즈에서 가장 높은 점수를 획득했는지를 보여주는 탑 리스트를 디스플레이하기 위한 오브젝트들을 제공한다. 질문들에 대한 포인트들이 각각의 질문 아이템에 규정된다. 예를 들어, 다중-선택 질문에서, 각각의 대안은 상기 대안이 얼마나 많은 포인트의 가치가 있는지를 표시하는 수치 값으로 주어진다. 단지 하나의 정확한 대안만이 존재한다면, 각 질문은 일 포인트의 가치가 있고, 정확한 대안에는 일 포인트의 값이 할당되고 나머지 모든 대안들에는 0 포인트의 값이 할당될 것이다. 퀴즈가 종료된 후, 사용자마다 점수가 계산되고, 점수들을 비교함으로써 탑 리스트가 생성될 수 있다. 결과는 퀴즈 질문 결과 또는 퀴즈 결과 리스트 콘텐츠 오브젝트들 중 하나를 사용하여 사용자에게 보여질 수 있다. 이 둘 모두는 질문들에 대한 결과를 포함하는 메뉴를 나타낸다. 결과가 각 질문에 대해 제시되어, 얼마다 많은 사용자들이 어떤 대안을 대답했는지를 퍼센티지로 보여준다. 차이는 퀴즈 결과 리스트에서, 통계가 차트로서 디스플레이되고, 그리고 퀴즈 질문 결과 오브젝트에서 단지 수치적으로 디스플레이된다는 것이다. 사용자의 개인 정보가 텍스트 변수를 사용하여 쉽게 보여질 수 있다. 소정의 텍스트 변수들은, 예를 들어, ${user}, ${score}, ${maxscore}, 및 ${toplist(_schedule(...))}을 포함할 수 있다.
퀴즈 결과의 그래픽 표현은 "폴그래프(pollgraph)"로서 행해진다. 폴그래프는 디스플레이가능한 콘텐츠 오브젝트이고, 다수의 바(bar)들로 이루어진 그래프를 나타낸다. 설정에 따라 상기 바들은 수평 또는 수직일 수 있고, 상기 그래프는 퍼센티지를 디스플레이하기 위해 사용될 수 있다(각 바가 나타내는 값들 모두의 합은 100 퍼센트이다). 기본적으로, 폴그래프는 실시간으로 디스플레이될 수 있는 표결(voting)의 그래픽적 표현이다. 결과는 각각의 옵션이 지금까지 얻은 표(vote)의 퍼센티지를 보여준다.
시간 스케줄(timed schedule)을 사용하지 않는 퀴즈들은 오프라인으로 행해질 수 있다. 오프라인 퀴즈들은 별개의 컴파일 방법들을 사용한다. 이는 오프라인 퀴즈가 서버와의 어떠한 상호작용없이도 실행될 수 있어야 하기 때문이며, 따라서 질문들이 알맞은 시간에 클라이언트 상에 호출되어야 하고, 최종 결과가 클라이언트에 저장되어 클라이언트가 다시 서버에 연결할 수 있을 때 송신되어야 한다. 퀴즈가 오프라인으로 작동하게 만들기 위하여, 스케줄, 섹션, 질문 등이 클라이언트에 다운로드 또는 저장되어야 한다.
퀴즈 질문들은 랜덤 순서로 제시될 수 있다. 랜덤화는 최종 컴파일 단계 동안 행해지는바, 이는 각각의 사용자에게 (잠재적으로) 고유한 순서로 질문들이 제시됨을 의미한다.
설문조사
특정 실시예들에서, 본 발명의 시스템 및 방법은 설문조사를 수행하기 위한 툴들을 제공한다. 설문조사는 질문들 및 사용자-제공 대답들로 구성되므로 퀴즈와 상당히 유사하다. 질문들은 설문조사의 생성자 또는 스폰서의 주요 관심사이다. 설문조사는, 예를 들어, 마케팅 리서치 및 통계 수집을 위하여 사용될 수 있다. 설문조사는 퀴즈의 생성에서 사용되는 것과 동일한 많은 오브젝트들 및 아이템들을 사용하여 생성될 수 있다. 설문조사는 퀴즈가 사용하는 것과 동일한 질문 및 스케줄 콘텐츠 아이템들을 사용한다. 설문조사는 퀴즈와 같은 게임이 아니지만, 대신에 통계를 수집하는 것에 관한 모든 것이고, 퀴즈의 점수화 특징들(scoring features)이 사용되지 않는다. 대신에, 사용자에게는 스케줄에 따라 질문들이 제시되고 (퀴즈에서 그러하듯이) 대답이 레코딩된다. 질문들을 위한 액세스 레벨들을 이용함으로써, 질문들은 사용자가 이전의 질문들에 어떻게 대답했는지에 근거하여 제시될 수 있고, 이는 필요하다면 다음 질문들을 묻는데 사용될 수 있다.
퀴즈 결과 및 결과 리스트들로, 질문을 받은 모든 사용자들로부터의 대답이 통계로 컴파일되어 최종 사용자에게 디스플레이되거나 서버로부터 검색될 수 있다. 설문조사 결과는 오픈 플래시 챠트를 사용하여 웹 인터페이스에 그래픽적으로 디스플레이되거나, 또는 CSV, XML, 오픈 플래시 챠트 JSON 파일들로서 다운로드될 수 있다.
본 발명의 일 예시적인 실시예에서, "퀴즈"는 id 1을 갖는 스케줄을 사용하는 클라이언트측 설문조사이다. 퀴즈 콘텐츠 오브젝트가 섹션의 부분이다. id 1을 갖는 스케줄은 "설문조사 스케줄"로 칭해지고 3개의 질문들을 포함한다. 스케줄은 별개의 콘텐츠 아이템으로서 저장된다. 최종적으로, id 2를 갖는 질문이 디스플레이되는 제1 질문이다. 그것은 두 개의 대안을 갖는 단일 선택 질문이다.
레포트
특정 실시예들에서, 본 발명의 시스템 및 방법은 레포트를 생성하기 위한 툴을 제공한다. 레포트는 설문조사 또는 퀴즈로부터의 데이터가 어떻게 검색 및 출력되는지를 커스터마이즈하는 방법이다. 특정 실시예들에서, 레포트는 XML 도큐먼트로서 생성되어, 데이터가 인쇄될 다양한 옵션들을 상세히 설명함과 아울러 사용자로 하여금 어떤 데이터를 출력할지를 선택할 수 있게 한다. 레포트는 스케줄을 포함한다. 스케줄은 "설문조사 아이템" 및 "이벤트"를 포함할 수 있으며, 상기 "설문조사 아이템" 및 "이벤트"는 스케줄 내에서 데이터 베이스 및 퀴즈 질문들 내에 레코딩된 대답 아이템들로부터 온 것이다.
4. 콘텐츠 오브젝트들 및 서브클래스들
본 발명의 시스템 및 방법은 섹션들에 포함될 수 있는 콘텐츠 오브젝트들을 제공한다. 콘텐츠 오브젝트들은 콘텐츠 아이템들에 대한 상세한 기술을 포함하는 본 발명의 특정 실시예들에 따른 구조(construction)들이다. 일부 오브젝트들은 모바일 스크린 상에 디스플레이될 비쥬얼 요소들(디스플레이가능한 오브젝트들)을 기술하며, 반면 다른 요소들은 비-비쥬얼 요소들 또는 상호적 기능을 기술한다. 콘텐츠 오브젝트들은 4개의 서로 다른 서브-클래스들, 즉, 디스플레이가능 오브젝트들; 입력 오브젝트들; 아이템 오브젝트들; 및 자원 오브젝트들을 포함한다.
본 발명의 특정 실시예들에서, 콘텐츠 오브젝트들은 클라이언트 애플리케이션 섹션들에 XML로 저장된다. 따라서, 단계 1 준비는 적어도 하나의 콘텐츠 오브젝트를 포함하는 소스 섹션에 대해 동작하고, 그리고 단계 2 준비는 소스 섹션을 대응하는 콘텐츠 오브젝트를 포함하는 동적 섹션으로 컴파일하는 것을 수반한다.
폼 및 메뉴와 같은 몇몇 디스플레이가능 콘텐츠 오브젝트들은, 종종 다른 콘텐츠 오브젝트들을 포함한다. 폼에 부가된 오브젝트들이 반드시 그들 스스로 디스플레이가능하여야 하는 것은 아닐 수 있다. 일부 오브젝트들은 네스팅된 오브젝트들을 포함하여, 그들 사이에 종속성(dependency)을 생성할 수 있다. 또한 네스팅된 오브젝트들의 체인들이 또한 존재할 수 있다. 예를 들어, 메뉴는 추가의 콘텐츠 오브젝트들을 포함할 수 있는 추가의 메뉴들을 포함할 수 있다. 그러한 종속성들을 추적하기 위하여, 이들은 그들 소유의 오브젝트 클래스에 의해 나타내어지고, 모든 콘텐츠 오브젝트들은 그들이 갖는 어떤 종속성들을 저장한다.
두 레벨의 콘텐츠 오브젝트가 존재한다. 예를 들어, 고-레벨 오브젝트들은 피드로부터 아티클 테스트 박스들에 대한 링크들을 갖는 메뉴를 생성할 수 있다. 저-레벨 오브젝트들은, 예를 들어, 정의된 스타일, 타이틀, 및 아이템들을 갖는 단순한 메뉴들일 수 있다. 고-레벨 오브젝트들은 단지 서버 상에서 내부 사용을 위한 것이고 이들이 클라이언트 애플리케이션들에 송신될 수 있기 전에 섹션 컴파일을 통해 반드시 저-레벨 오브젝트들로 변환되어야 한다.
특정 프로젝트들은 새로운 그리고 특정한 맞춤 콘텐츠 오브젝트(bespoke content object)들의 생성을 요구할 수 있다.
콘텐츠 오브젝트의 새 타입은 또한, 그것이 보다 적절하다면, 시스템에 플러그-인으로서 부가될 수 있다.
모든 콘텐츠 오브젝트들이 표 5에 열거된 정보를 포함한다.
Figure 112013040572804-pct00005
클라이언트 애플리케이션 내의 콘텐츠 오브젝트들은 보통 실시간으로 게이트웨이 서버를 사용하여 최신으로 유지된다. 프로젝트 프로듀서의 재량으로, 클라이언트 애플리케이션이 오프라인 모드(이 경우에 이 정보는 앱이 온라인으로 되돌아오자마자 검색될 수 있음)에서 사용되고 있지 않다면, 게이트웨이 서버는 언제 콘텐츠 오브젝트들이 최종 사용자들에 의해 호출되는지 그리고/또는 디스플레이 가능한 오브젝트들이 사용되고 있는지를 추적할 수 있다.
콘텐츠 오브젝트들은 고유 식별자에 의해 식별되고 이들 id들을 사용하여 함께 링크된다. 모든 오브젝트들이 또한 액세스 레벨을 가져, 프로듀서들로 하여금 어떤 사용자들이 오브젝트에 대한 액세스가 허용 또는 거부되는지를 정의할 수 있게 한다.
일부 콘텐츠 오브젝트들은 Java ME 기술에서의 오브젝트들과 유사하나, 다른 오브젝트들은 본 발명의 시스템 및 방법에 의해 고유하게 제공된다. 콘텐츠 오브젝트들의 리스트가 표 6에 표시된다.
Figure 112013040572804-pct00006
콘텐츠 오브젝트들은 적어도 4 개의 서브-클래스들, 즉 디스플레이가능 오브젝트들, 입력 오브젝트들, 아이템 오브젝트들, 및 자원 오브젝트들을 포함한다. 디스플레이가능 오브젝트는 스크린 상에 디스플레이될 수 있는 오브젝트이다. 특정 실시예들에서, 디스플레이가능 콘텐츠 오브젝트는 MIDP 디스플레이가능 오브젝트와 유사하다. 디스플레이가능 오브젝트들의 리스트가 표 7에 표시된다.
Figure 112013040572804-pct00007
디스플레이가능 오브젝트의 가장 기본적인 형태는 텍스트박스이며, 상기 텍스트박스는 타이틀 및 텍스트로 구성된다. 또 다른 유용한 디스플레이가능 오브젝트는 메뉴이고, 상기 메뉴는 최종 사용자에 의해 선택될 대안들의 리스트를 보여준다. 메뉴 아이템을 선택하는 것은 타겟을 호출한다. 폼들은 텍스트, 이미지, 및/또는 다른 아이템들의 더욱 복잡한 레이아웃들을 포함할 수 있는 콘테이너들이다. 모든 입력 오브젝트들이 또한 디스플레이가능 오브젝트들이다. 각각의 디스플레이가능 오브젝트는 어떤 개수의 타겟 커맨드(targeted command)들과 관련될 수 있다. 커맨드들은 오브젝트가 스크린 상에 디스플레이되자마자 최종 사용자에 의한 호출에 대해 준비가 된다. 각각의 디스플레이가능 오브젝트는 또한 정의된 스타일을 가질 수 있다. 스타일들은 컬러, 그래픽, 및 타이틀과 콘텐츠 바에 대한 그리고 섹션 그 자체에 대한 간단한 레이아웃에 관한 정보를 포함한다.
입력 오브젝트들은 콘텐츠 오브젝트들의 또 다른 클래스이다. 입력 오브젝트들은 최종 사용자 입력을 프로세싱하기 위하여 사용된다. 간단한 입력 오브젝트들이 최종 사용자로 하여금 서버로 송신되는 값을 타이핑(type in) 또는 선택할 수 있게 한다. 각각의 최종 사용자 입력 아이템은 ("최종 사용자로부터의 대답"에서와 같이) 서버 상에서 "대답"으로서 칭해지고 시간 스탬프와 함께 코어 데이터베이스에 저장된다. 입력 방법들이 디바이스마다 다를 수 있으므로 입력 오브젝트들(즉, 텍스트 입력들)은 종종 모바일 디바이스의 고유 GUI를 이용한다.
입력 오브젝트들은 또한, 다수의 서로 다른 입력들을 관련될 수 있게 하는 (HTML 형태와 같은) 형태로 배치될 수 있다. 모든 입력 오브젝트들이 또한 디스플레이가능 오브젝트들이다. 표 8은 입력 오브젝트들의 리스트를 제공한다.
Figure 112013040572804-pct00008
입력들 및 대답들은 퀴즈, 경합, 게임, 설문조사, 여론조사(poll) 등을 시행하는데 사용된다. 퀴즈 및 그것의 입력과 대답은, 최종 사용자의 대답들이 점수화되고 따라서 수집된 데이터가 고 득점자들(top scorers), 및 프로젝트의 데이터 분석 요건(예컨대, 마케팅 리서치를 위한 데이터 분석 요건)에 따라 분석되고 그리고 써드 파티 소프트웨어 패키지에 출력되는 다른 타입의 리스트들을 발생시키는데 사용될 수 있도록 구성될 수 있다.
특정 실시예들에서, 모든 퀴즈/경합/게임/설문조사/여론조사 로직은 전적으로 게이트웨이 서버에 상주하며, 상기 게이트웨이 서버에서 모든 프로세싱 및 데이터 저장이 수행되고; 그것의 I/O 기능들(즉, 서버 상에 입력들 및 대답들을 송신하고, 그리고 모바일 디바이스 스크린에 디스플레이 및 콘텐츠 오브젝트들을 전달하는 기능)을 제외하고는, 클라이언트 애플리케이션은 어떠한 프로세싱도 수행하지 않으며 어떠한 관련된 데이터도 저장하지 않는다.
클라이언트 애플리케이션은 (소정의 시작 값들을 갖는) 서로 다른 타입의 입력들을 디스플레이하고 대답들을 서버로 다시 송신한다. 입력 오브젝트들은 온라인 및 오프라인 모드 둘 다에서 사용될 수 있다. 일부 입력 오브젝트들은 최종 사용자들로부터의 파일 업로드(예컨대, 디바이스 카메라가 사진을 가지고 있는 경우 디바이스 카메라로부터의 사진들, 오디오 및/또는 비디오 클립들, 등)를 나타낸다. 입력 오브젝트들은 또한 파일 입력 오브젝트를 사용하여 다른 형태의 파일을 업로드하는데 사용될 수 있다.
아이템 오브젝트들은 콘텐츠 오브젝트들의 또 다른 클래스이다. 아이템 오브젝트들이 폼들에 배치될 수 있다. 아이템들은 그 스스로 디스플레이될 수 없으나, 디스플레이될 폼으로 배치될 필요가 있다. 아이템 오브젝트들이 폼으로 배치될 수 있는 유일한 오브젝트들은 아니다. 입력 오브젝트들 또한 폼으로 사용될 수 있다. 표 9는 아이템 오브젝트들의 리스트를 제공한다.
Figure 112013040572804-pct00009
자원 오브젝트들은 콘텐츠 오브젝트들의 일 클래스이다. 자원 오브젝트들은 자원들을 기술한다. 자원들은 서버의 파일 시스템에 저장되고 콘텐츠와는 별개로 클라이언트 애플리케이션들에 다운로드된다. 표 10은 자원 오브젝트들의 리스트이다.
Figure 112013040572804-pct00010

5. 섹션 컴파일( Section Compilation )
콘텐츠 오브젝트들은 섹션들(특정 실시예들에 따른 콘텐츠의 기본 양(basic quanta)) 내에 존재한다. 특정 실시예들에서, 콘텐츠 생성은 웹 인터페이스를 통해 소스 섹션의 저작(authoring)을 시작한다. 소스 섹션은 일반적으로 적어도 하나의 고-레벨 콘텐츠 오브젝트를 포함한다.
고 레벨 콘텐츠 오브젝트들을 포함하는 소스 섹션들은 클라이언트 애플리케이션들에 의해 처리되기 위하여 컴파일될 필요가 있다. 컴파일은 고-레벨 오브젝트들을, 클라이언트 애플리케이션들에 의해 바로 이해, 처리, 또는 디스플레이될 수 있는 저-레벨 오브젝트들로 대체한다.
서버에서, 섹션들은 XML 데이터로서 처리되거나, 또는 오브젝트들로 파싱된다. 섹션들이 파싱될 때, 그들의 모든 콘텐츠(커맨드 콘텐츠 오브젝트들, 등)가 또한 파싱된다. XML 파싱 및 기록이 XML 프레임워크에 의해 처리된다. 본 발명의 시스템 및 방법은 XML을 프로세싱하기 위하여 프레임워크를 제공하는바, 상기 XML은 (Java 소프트웨어 패키지의 부분으로서 포함된) SAX(Simple API for XML) 파서를 사용한다.
섹션들은 프로덕션 애플리케이션에서 생성되고; 컴파일되고, 그리고 게이트웨이 애플리케이션을 통해 클라이언트 애플리케이션들에 송신된다.
프로덕션 애플리케이션은 (자원들을 제외한) 그것의 데이터를 프로덕션 데이터베이스에 저장한다. 그러나, 프로덕션 애플리케이션은 최종 사용자 데이터가 저장되는 코어 데이터베이스에 대해 직접 액세스를 갖지 않는다. 다른 이유들 중에서도 이 이유로 인하여, 주로 개별 최종 사용자들에 대해 개별적으로 컴파일될 필요가 있는 콘텐츠의 양을 최소화함으로써 성능을 최적화하기 위하여, 섹션 컴파일이 3 단계들로 행해진다. 단계 1에서, 프로덕션 데이터베이스에 저장된 데이터와 관련된 콘텐츠가 프로덕션 애플리케이션에 의해 컴파일된다. 단계 2에서, 코어 데이터베이스 내에 저장된 데이터와 관련된 최종 사용자 그룹 콘텐츠가 게이트웨이 애플리케이션에 의해 컴파일된다. 단계 3에서, 코어 데이터베이스 내에 저장된 데이터와 관련된 개별 최종 사용자 콘텐츠가 개별/필요 기반(individual/as-needed basis)으로 게이트웨이 애플리케이션에 의해 컴파일된다. 각 단계는 여기에서 더 자세히 기술된다.
위에서 볼 수 있는 바와 같이, 본 발명의 시스템 및 방법은 퀴즈, 설문조사, 및 레포트의 형태로 기능을 제공한다. 위에서 논의된 바와 같이, 상당히 많은 복잡한 콘텐츠를 신뢰할 수 있는 적시의 방식으로 전달하기 위하여, 본 발명의 시스템 및 방법은 클라이언트의 네비게이션된 타겟에 직접 관련있는 콘텐츠만을 송신하는 다중-단계 준비 프로세스를 제공한다. 상기 다중-단계 프로세스는 또한 클라이언트가 마지막으로 콘텐츠를 로딩한 이후로 변경된 콘텐츠만을 송신하여, 이전에 준비된 콘텐츠가 불필요하게 다시 준비되지 않게 한다. 본 발명의 시스템 및 방법은 클라이언트에 콘텐츠의 실시간 푸시를 가능하게 하고, 콘텐츠 준비로부터 클라이언트 연결성을 가능한 많이 분리시킨다.
도 1 내지 4에 도시된 것과 같은 콘텐츠 전달의 각 시나리오에서, 콘텐츠는 3 단계들로 준비된다. 단계 1은 콘텐츠를 포함하는 섹션을 획득 또는 생성하는 것을 수반한다. 단계 2는 상기 섹션을 처음으로 컴파일하는 것과, 동적 섹션으로 칭해지는 것을 생성하는 것을 수반한다. 단계 3은 각 개별 사용자를 위해 동적 섹션을 재컴파일하면서 한편으로 동적 섹션을 일련의 바이너리 패킷들로 구성된 컴파일된 섹션으로 재포맷하는 것, 그리고 동시에 그것을 사용자에게 큐를 통해 송신하는 것을 수반한다. 각 단계가 여기에서 더 자세히 설명된다.
단계 1
단계 1에서, 프로덕션 데이터베이스에 저장된 데이터와 관련된 콘텐츠가 도 1에 기술된 것과 같은 프로덕션 애플리케이션에 의해 컴파일된다. XML 소스 파일들이 컴파일된 동적 섹션들로 재구성되고, 가능하다면 사용자와 무관한(user independent) 고-레벨 오브젝트들이 저-레벨 오브젝트들로 대체된다. 컴파일된 동적 섹션들은 XML 포맷으로 유지된다. 단계 1 컴파일은, (프로덕션 서버의 일반적인 보수 루틴(maintenance routine)의 부분으로서) 정기적인 인터벌(regular interval)로뿐만아니라 예를 들어, 섹션이 로딩, 재로딩, 및/또는 갱신될 때 수행된다.
단계 1 컴파일의 제1 단계는 기본 섹션 정보를 새로 생성된 컴파일된 섹션에 카피하는 것이다. 이후 실제 컴파일이 발생하고, 그럼으로써 콘텐츠 오브젝트들이 컴파일되고, 이미지의 헤더들이 생성 및 삽입된다. 섹션은 이후 파싱되고 필요하다면 콘텐츠 오브젝트들이 검사 및 컴파일된다. 모든 콘텐츠 오브젝트들은 규정된 그들의 개별 컴파일 방법들을 가지고, 각각의 오브젝트 타입은 그 방법을 사용하여 컴파일된다. 웹 피드(RSS, ATOM)가 이 시점에 페치되고(그리고 이후 서버에 의해, 정기적인 인터벌로, 갱신을 위해 검사됨) 보통의 메뉴 및 텍스트 박스로서 삽입된다. 이는 모든 최종 사용자들에게 단 한번 행해지고 서버에 어떠한 눈에 띄는 부하도 생성하지 않으며, 또는 예를 들어, 제공자(provider)에게 피드(feed)하기 위하여 행해진다.
단계 1 콘텐츠 준비는, 애플리케이션의 모든 사용자들에게 일반적인, 그러나 사용자들에 의해 생성된 콘텐츠(예컨대, 챗, 코멘트 등)는 아닌 하나 이상의 소스 섹션들의 형태로 저-레벨 출력을 생성한다. 특정 실시예들에서, 단계 1 준비는 콘텐츠 프로듀서에 의해 작성되었거나 콘텐츠 프로듀서를 위한 것인 입력 XML로서 행해진다. 이 XML은 단계 1에 의해 저 레벨 요소로 변환될 고 레벨 요소들을 포함한다. 이것의 예는 메뉴아이템, 텍스트박스, 및 이미지 레퍼런스 요소들을 포함하는 메뉴 요소로 변환되는 아티클 리스트(ArticleList)일 것이다.
이 단계에서 생성되는 섹션들이 메모리에 저장되고 게이트웨이들은 갱신들을 수신하도록 등록될 수 있다. 단계 1 오브젝트들은 이들 오브젝트들이 현재 필요하지 않다면 메모리를 보존하기 위하여 메모리로부터 플러시(flush)된다.
이 데이터의 준비를 별개의 단계로 분리함으로써, 이 단계가 모든 개별적으로 연관된(attached) 클라이언트에 대해 불필요하게 반복될 필요가 없으므로 적시의 전달 및 클라이언트 응답 시간이 최적화된다. 대역폭 및 서버 자원이 또한 보존된다.
단계 1 준비는 동적 섹션을 생성하며, 단계 2는 상기 동적 섹션에 대해 동작한다.
단계 2
단계 2 콘텐츠 준비는 단계 1 준비의 XML 출력을 입력으로서 취한다. 단계 2에서, 사용자가 생성했으며 앱 상의 사용자들의 그룹에 대해 일반적인 것으로 고려될 수 있는 콘텐츠가 준비된다. 이러한 종류의 콘텐츠의 예는 그룹 채팅(모든 사용자들이 동일한 챗을 봄) 및 공개 코멘트(public comment)이다. 이 단계에서 생성된 섹션들은 게이트웨이 서버 상의 메모리에 콘텐츠 오브젝트들로서 저장되며, 여기서 이들은 모든 등록된 리스너들에게 이용가능하다.
단계 2 오브젝트가 먼저 컴파일될 때, 이들은 이전 버전이 존재한다면 메모리 내의 이전 버전과 비교된다. 오브젝트가 변경되었거나, 새로운 것이거나 또는 삭제된 것으로 식별되면, 이는 등록된 리스너들에게 그 오브젝트들만의 송신하는 것을 트리거링한다. 클라이언트와의 통신은 여전히 섹션 레벨에 있으나, 상기 섹션은 단지 영향받은(affected) 오브젝트들만을 포함할 것이다. 이들 오브젝트들은 또한 메모리 내에서 오래된 오브젝트들을 대체할 것이다.
단계 2에서, 최종 사용자 데이터베이스 내에 저장된 데이터와 관련된 최종 사용자 그룹 콘텐츠가 게이트웨이 애플리케이션에 의해 컴파일된다. 단계 2 컴파일은 단계 1과 본질적으로 유사하나, 어떠한 이미지 헤더 생성도 없다. 단계 2 컴파일은 예를 들어, 단계 1 컴파일 후에; 콘텐츠 갱신이 동기화 프로세스의 부분으로서 요구될 때; 클라이언트 애플리케이션이, 예를 들어, 로그온에 의해 또는 콘텐츠를 요청함으로써 서버에 연결될 때; 또는 정기적인 인터벌로 수행된다. 일부 실시예들에서, 클라이언트 애플리케이션이 서버에 연결된 후, 앱에 의해 요청된 동적 섹션이 다운로드 전에 등록, 재로딩(reloading), 및 재컴파일된다.
단계 2에의 입력은 단계 1의 컴파일 소스 섹션이다. 클라이언트 애플리케이션에 의해 사용되고 있는 섹션들은 "로딩된(loaded)" 것으로 칭해진다. 게이트웨이 상에서 활성(active)인 섹션이 동적 섹션으로서 오픈된다. 동적 섹션들은 프로덕션 서버 상에서의 갱신들에 대해 검사하고 자동적으로 소스 섹션과 동기화하고, 어떤 변경들을 클라이언트 애플리케이션에 즉시 푸시한다. 갱신이 이루어질 때마다, 동적 섹션이 재컴파일된다. 단계 2는 개별 최종 사용자들에 대해 컴파일될 필요가 있는 콘텐츠의 양을 감소시킴으로써 컴파일 프로세스를 최적화하는 방법으로서 생성되었다.
본 발명에 따른 일 예시적인 실시예에서, 채팅은 모든 최종 사용자들에게 동일하게 보여지는 그룹 콘텐츠의 일종이며, 따라서, 단계 2에서 컴파일될 수 있다.
대안적으로, 폼은 각각의 개별 최종 사용자에 대해 서로 다른 데이터(예컨대, 닉네임, 나이, 및 다른 개인 정보)를 포함하는 콘텐츠의 일종이고, 각각의 폼은 개별적으로 컴파일될 필요가 있다. 동적 섹션들이 준비되어 준비의 최종 단계, 즉 단계 3에 최종 사용자 클라이언트에게 송신된다. 개인화된 폼을 최종 사용자에게 송신하기 위하여, 포괄적인(또는 "빈") 폼 버전이 동적 섹션으로서 제공될 것이고, 그 최종 사용자에게 개인적인 적어도 하나의 데이터 아이템이 코어 데이터베이스로부터 검색될 것이고, 상기 동적 섹션과 상기 개인 데이터 아이템이 단계 3에서 컴파일된 섹션으로 컴파일될 것이다.
단계 3
단계 3 콘텐츠 준비는 단계 2 준비의 (오브젝트) 출력을 입력으로서 취한다. 단계 3에서, 개별 사용자들에 의해 생성되었고 사용자들의 그룹들에 적용되지 않는 콘텐츠가 준비된다. 이러한 개별 데이터 아이템들의 예들은 사용자명 또는 나이와 같은 사적인 사용자 입력들이다. 추가로, 액세스 레벨 제어가 이 단계에서 검사되고, 예를 들어, 특정 사용자에게 보여지지 않도록 된 오브젝트들이 제거된다. 단계 3은 또한 최종적으로, 소켓 통신(하기의 "6. 통신 및 데이터 포맷"에서 더 자세히 논의됨)을 통해 클라이언트에게 스트리밍되는 패킷 프로토콜로 바이너리 가공물(binary artefacts)을 생성한다.
코어 데이터베이스 내에 저장된 데이터와 관련된 개별 데이터 아이템들은 게이트웨이 애플리케이션에 의해 개별/필요 기반으로 컴파일된다. 단계 2 컴파일이 완료된 후, 오브젝트들은 단계 3 컴파일되기 위하여 개별 패킷들로 분할되고, 클라이언트 애플리케이션으로 전달되기 전에 어떤 요구되는 변환(translation)이 이루어진다. 컴파일 및 변환 후, 패킷들이 출력되어 압축될 그리고 클라이언트 애플리케이션으로 전달될 준비가 된다.
단계 3 컴파일은, 최종 사용자가 서버에 연결할 때 또는 섹션에 대한 갱신이 발생될 때를 포함하여, 콘텐츠가 클라이언트 애플리케이션으로 송신될 때 수행된다.
최종 사용자 및 콘텐츠 오브젝트 둘 모두를 위한 액세스 레벨들이 검사된다. 사용자가 오브젝트에 대한 액세스를 가지면, 이것이 컴파일된다. 그렇지 않다면, 요청이 무시된다. 이 단계에서 수행되는 컴파일은 오브젝트에 특정된 컴파일이다. 변환이 또한 필요하다면, 이는 컴파일 이후에 발생한다. 최종적으로, 패킷들이 어레이에 부가되고, 압축되고, 그리고 클라이언트 애플리케이션으로 송신된다.
이 단계는 모든 사용자에게 행해지므로 신중하게 최적화된다. 이 단계 동안, 모든 개별 데이터 아이템들이 삽입된다. 예를 들어, 최종 사용자 이름, 나이, 성별 등과 같은 사적 정보를 포함하는 폼이 코어 데이터베이스 내에 저장된 것과 같은 개인의 대응하는 정보로 채워질 것이다. 사용자-정의 웹 피드가 이 시점에 임포팅(importing)된다(그리고 고유 피드 기반으로, 정기적인 인터벌로 갱신에 대해 검사된다).
단계 3에 의해 생성되는 패킷 프로토콜 내의 바이너리 가공물은 섹션을 구성하는 개별 위젯 및 다른 콘텐츠에 대응하며, 이들은 서버 상에 Java 클래스로서 그리고 클라이언트 상에 다양한 플래폼들에 대한 등가의 포팅된 포맷(equivalent ported formate)으로 존재할 수 있다. 이것이 콘텐츠 앱이 크로스-플래폼으로 만들어지는 방식이다.
단계 3 출력은 이 데이터가 클라이언트 기반으로 생성되고 다른 클라이언트들에 의해 재사용될 수 없기 때문에 메모리에 저장되지 않는다. 출력은 클라이언트의 개별 전달 큐에 직접 넣어진다.
콘텐츠의 클라이언트로의 전달을 최적화하기 위하여, 다중-단계 콘텐츠 준비 프로세스의 부분은 변경된 콘텐츠 또는 이벤트들을 개별 클라이언트들에게 푸시하는 서버의 능력을 수반한다.
섹션들이 패킷들로 준비되어 클라이언트에 전달될 준비가 됨에 따라, 이들은 연결된 클라이언트당 하나씩 클라이언트 전달 큐들로 송신된다. 고정된 그리고 구성가능한 수의 통신 매니저 쓰레드 프로세스들이, 이 큐들로부터 패킷들을 검색하고 이들을 등록된 리스너들(클라이언트들)에게 송신하기 위하여 백그라운드에서 실행한다. 이러한 아키텍쳐의 결과로서, 콘텐츠 준비로부터의 출력이 클라이언트 연결로부터 분리되는바, 즉, 출력 프로덕션이 블록되지 않는다.
본 발명의 특정 실시예들에서, 클라이언트 애플리케이션들에 부가하거나 클라이언트 애플리케이션들을 수정하기 위하여 플러그인들이 사용될 수 있다. 플러그인에 의해 제공되는 추가의 기능이 커스텀 콘텐츠 컴파일을 요구한다면, 이는 컴파일 프로세스의 모든 3 단계들을 요구할 수 있다. 플로그인을 위한 커스텀 컴파일러를 생성 및/또는 사용하는 것이 또한 가능하다. 예를 들어, 위에서 기술된 것과 같은 준비 단계들 전에, 서버가 어떤 다른 등록된 커스텀 컴파일러들에 대해 체크하고 이들을 먼저 실행한다.
다중-단계 콘텐츠 준비 프로세스는 클라이언트 연결 및 상호작용성의 측면에서 사용자 경험을 최적화하기 위하여 의도적으로 콘텐츠 준비로부터 클러이언트 연결을 분리한다.
단계 1이 새 콘텐츠를 생성하는 어떠한 문제들을 갖는다면, 클라이언트 상호작용성이 영향받지 않도록 오래된 콘텐츠가 메모리에 머무른다. 사실, 프로덕션 서버(또는 게이트웨이와 동일한 서버 상에 호스팅된다면 프로덕션 JVM)는, 클라이언트 네비게이션 및 상호작용성에 영향을 줌이 없이 임의대로 재시작될 수 있다.
이것의 당연한 결과가 또한 하드웨어 구성에 대한 유연성이다. 프로덕션 서버는 콘텐츠 프로듀서를 위해 더욱 액세스가능한 장소에 위치될 수 있다.
6. 통신 및 데이터 포맷
본 발명의 시스템 및 방법은 몇 개의 독립적인 서버 애플리케이션, 웹-인터페이스 및 모바일 클라이언트를 제공한다. 시스템의 이 부분들 사이의 통신은 Java 소켓 포트 또는 HTTP 포트 80을 통해 행해진다. 두 모바일 디바이스 구성들에서의 차이들, 및 다양한 텔레콤들에서 HTTP 포트 80 통신과 비교하여 로우 소켓 포트(raw socket port)의 변하는 신뢰성을 수용하기 위하여, 두 통신 프로토콜들 모두가 사용된다. 소켓 포트 연결을 사용하든 또는 HTTP 포트 80 연결을 사용하든, 페이로드는 본 발명에 의해 제공되는 패킷 프로토콜에 따른 패킷들을 포함하는 바이너리 가공물이다. 서로 다른 종류의 정보를 운반하는 많은 종류의 패킷들(예컨대, 이벤트 패킷들, 상이한 종류의 대답 패킷들, 콘텐츠-오브젝트 패킷들 등)이 있을 수 있다. 패킷 포맷은 간단할 수 있고, 예를 들어, 그것이 무슨 타입의 패킷인지 그리고 그 패킷의 길이가 무엇인지에 대한 정보를 포함하는 작은 헤더를 포함할 수 있다. 패킷들은, 상기 패킷들이 바이트 어레이로서 엔코딩된 상태로, Java 데이터아웃스트림을 사용하여 송신될 수 있다. 패킷 포맷이 표 11에 도시된다.
Figure 112013040572804-pct00011
XML
특정 실시예들에서, 모든 콘텐츠가 XML 포맷으로 저장되고 서버 상의 많은 내부 통신이 XML을 사용한다. 본 발명의 시스템들은 XML 프레임워크를 제공한다. 프레임워크는 Java SE SAX 파서를 통해 파사드(facade) 디자인 패턴을 사용하여 구현된다.
섹션들은 개별 XML 요소들로 파싱된다. 일부 요소들은 (섹션 id를 포함하는) 헤더 및 (헤더에 기술된 애플리케이션을 위한 엔트리 포인트로서 사용되는) 메인 오브젝트와 같은 각 섹션에 대해 의무적이다. 파싱되는 선택적 섹션 요소들은 콘텐츠 오브젝트들, 서버 오브젝트들(서버에서만 사용되는 고 레벨 오브젝트들), 스타일 및 테마들, 섹션 특성들 및 애매한 규칙들이다.
오브젝트에 특정된 방법들에 따라 모든 오브젝트들이 이후 파싱된다. 오브젝트 타입들은 정수 값들을 사용하여 식별된다. 콘텐츠 오브젝트들은 먼저 타입에 따라 분할되고, 그리고 그후 콘텐츠가 상기 오브젝트의 타입에 특정된 방법에 따라 더 파싱된다. 실제로, 파싱은 XML 요소들로부터 나오는 모든 정보를 취하여 그것을 속성값 쌍들을 포함하는 어레이들에 배치한다. 이는 오브젝트들의 처리를 쉽게 만든다. 콘텐츠는 이 파싱된 포맷을 사용하여 하기의 예에 도시된 것과 같은 바이너리-엔코딩된 패킷들로 클라이언트에 송신된다.
서버 상의 통신은 대개 XML 패킷들을 이용하여 행해진다. XML 패킷들은 XML 프레임워크의 부분인 XML 라이터(writer)를 사용하여 출력/입력 스트림들에 기록된다.
바이너리 포맷
패킷들이 서버로부터 클라이언트 애플리케이션으로 송신되기 전에, 또는 그 반대의 경우에, 상기 패킷들은 XML 대신 바이너리 포맷으로 변환된다. 패킷들은 상기의 패킷 포맷을 사용하는 엔코딩을 이용하여 송신된다. XML이 클라이언트들에서 사용되지 않고, 따라서, 모든 콘텐츠 오브젝트들이 클라이언트와 서버 사이에서 바이너리 패킷들로서 송신된다. 바이너리 "콘텐츠 오브젝트" 패킷의 예는 하기와 같이 보인다.
본래의 XML 데이터는 하기와 같다.
<menu id="menuid" style="menustyle" default_cmd="sel_cmd" title="My menu">
<cmd id="sel_cmd" target=" select"/>
<cmd id="back_cmd" target=" back"/>
<item id="item0" target="someobject"/>
<item id="iteml" target="anotherobject"/>
<item id="item2" target="__exit"/>
</menu>
XML 파싱 후, 메뉴 오브젝트가 메뉴 아이템들의 어레이, 및 커맨드들의 어레이로 구성된다. 각각의 아이템 및 커맨드는 id 및 타겟을 갖는다. 정보가 이후 바이트 어레이로 변환되고, Java DataOutStream을 사용하여 송신된다.
필드사이즈(바이트) 필드설명 필드콘텐츠
2 패킷 타입 "1" (콘텐츠 오브젝트)
4 콘텐츠 길이 "136"(바이트로의 패킷 콘텐츠 길이)
2 오브젝트 타입 "1"(메뉴)
2+6 오브젝트 id "6"(스트링길이) + "메뉴id"
2 메뉴 아이템 개수 "3"
2+5 Item[O] id "5" + "itemO"
2+10 Item[0] target "10" + "someobject"
2+5 Item[l] id "5" + "iteml"
2+13 Item[l] target "13" + "다른오브젝트"
2+5 Item[2] id "5" + "item2"
2+6 Item[2] target "6" + " exit"
2+7 메뉴 타이틀 "7" + "My menu"
2 커맨드 개수 "2"
2+7 Command[O] id "7" + "sel cmd"
2+8 Command[O] target "8" + " select"
2+8 Command[l] id "8" + "back_cmd"
2+6 Command[l] target "6" + " back"
2+7 디폴트 커맨드 "7" + "sel_cmd"
2+9 오브젝트 스타일 "9" + "menustyle"
실제 바이너리 패킷:
Figure 112013040572804-pct00012
연결 HTTP 폴백( fall - back )
클라이언트로의 콘텐츠 전달의 신뢰성을 최적화하기 위하여, 다중-단계 콘텐츠 준비 및 전달 프로세스의 부분은, 정규의 (선호되는) 소켓 통신이 동작하지 않는 경우에 플레인(plain) HTTP 통신으로 폴백하도록 하는 클라이언트 및 서버의 성능을 포함한다.
정규 클라이언트 통신은 게이트웨이 서버와 (외부) 클라이언트 앱 사이의 소켓 연결을 통해 2-웨이 통신을 사용하여 수행된다. 이 연결이 어떠한 이유로든 동작하지 않는 경우에, 이것은 HTTP를 통해 시뮬레이션된 연결로 대체된다. 이 연결은 게이트웨이 서버 HTTP서블릿을 폴링하는 클라이언트에 의해 유지된다(이는 콘텐츠가 HTTP를 통해 여전히 푸시될 수 있게 하는 방식이다).
7. 서버 및 애플리케이션
특정 실시예들에서, 본 발명은 4개의 애플리케이션들(프로덕션 애플리케이션; 사용자 애플리케이션; 엔트리 애플리케이션; 및 게이트웨이 애플리케이션)을 제공하며, 상기 애플리케이션들 각각이 전용 서버에 제공될 수 있다. 특정 실시예들에서, 본 발명은 웹 인터페이스 애플리케이션을 포함한다. 특정 실시예들에서, 본 발명의 시스템 및 방법은 콘텐츠를 생성하고, 상기 콘텐츠를 프로세싱 및 컴파일하고, 그리고 최종-사용자 연결을 유지하고, 사용자(외부) 애플리케이션들을 배포하고, 그리고 컴파일된 콘텐츠를 사용자 애플리케이션에 배포하는 능력을 제공한다.
특정 실시예들에서, 본 발명은 서로 다른 기능을 제공하는 4개의 독립형 애플리케이션들을 포함한다. 이들 애플리케이션들은 예컨대, 개별 머신들 또는 서버들로서 물리적으로, 또는 예를 들어, 별개의 Java 가상 머신들로서 논리적으로 파티셔닝될 수 있다. 특정 실시예들에서, 이들은 모두 동일한 머신 및 JVM 상에서 실행될 수 있다. 서버의 이 논리적 파티셔닝은 확장성(scalability)을 허용한다. 예를 들어, 복수의 게이트웨이들은 요구되는 바에 따라 증가된 수의 연결된 사용자들을 처리하도록 구성된다. 파티셔닝은 또한 한번에 애플리케이션들 또는 서버들의 부분들만을 갱신할 수 있게 하는바, 이는 전체 시스템이 갱신을 위해 오프라인될 필요가 없음을 의미한다. 마찬가지로, 서버 애플리케이션들 중 하나에서의 고장(crash)이 전체 시스템 고장을 야기하지 않을 것이다.
서로 다른 애플리케이션들 사이의 내부 통신이 소켓을 이용하여 TCP/IP를 통해 행해진다. 모든 데이터는, 데이터를 포함하는 작은 헤더 및 페이로드로 구성된 간단한 패킷들을 이용하여 송신된다.
프로덕션 애플리케이션
프로덕션 애플리케이션은 콘텐츠 및 자원 파일들(이미지, 비디오 클립, 등)의 생성 및 저장을 처리한다. 특정 실시예들에서, 프로덕션 애플리케이션은, 서버 컴퓨터로서 또는 가상 머신 내에서, 전용 프로덕션 서버 내에 하우징된다. 특정 실시예들에서, 프로덕션 애플리케이션은 모든 다른 서버 애플리케이션들을 제어하고 이들을 함께 연결한다. 프로듀서들은 콘텐츠를 생성하기 위하여 프로덕션 애플리케이션을 사용한다. 프로덕션 애플리케이션은 섹션들의 단계 1 컴파일을 처리하고 외부 콘텐츠 링크 웹 피드를 임포팅한다.
특정 실시예들에서, 프로덕션 애플리케이션은 단독형 애플리케이션이다. 애플리케이션은 개별 서버 상에서 실행되어, TCP/IP를 통해 웹 인터페이스뿐만 아니라 다른 애플리케이션들과 통신한다. 프로덕션 애플리케이션의 주 책임은 콘텐츠 생성을 가능하게 하는 것이다. 프로덕션 애플리케이션은 또한 다른 애플리케이션들을 함께 연결하는 서버 상의 중앙 애플리케이션이다.
프로듀서들은 프로덕션 애플리케이션에 액세스하기 위하여 웹 인터페이스를 사용하는 콘텐츠를 생성한다. 콘텐츠는 이후 프로덕션 애플리케이션으로 송신된다. 프로덕션 애플리케이션은 유입되는 콘텐츠를 처리한다. (프로듀서들과 웹-인터페이스 사이의 통신을 제외한) 모든 통신이 TCP/IP 소켓 연결을 통해 행해진다. 콘텐츠는 패킷 포맷을 이용하여 XML 패킷들로서 송신된다. 게이트웨이 애플리케이션(들)이 콘텐츠의 최종 사용자들로의 배포(distribution)를 처리한다. 게이트웨이 애플리케이션이 프로덕션 애플리케이션과 최종 사용자 사이의 중간 링크로서 동작하여, 최종 사용자들로부터의 콘텐츠에 대한 요청을 프로덕션 애플리케이션으로 포워딩하거나 애플리케이션으로부터 갱신된 콘텐츠를 최종 사용자에게 푸시 아웃(push out)하여, 콘텐츠가 서버와 최종 사용자 사이에서 실시간으로 동기화되게 한다.
프로덕션 애플리케이션은 섹션들을 포함하여 모든 상이한 종류의 콘텐츠를 처리한다. 콘텐츠는 프로덕션 애플리케이션에 의해 프로덕션 데이터베이스 내에 저장된다. 일부 실시예들에서, 프로덕션 애플리케이션이 프로덕션 서버에 의해 제공되며, 프로덕션 데이터베이스는 상기 프로덕션 서버의 구성요소이다. 모든 콘텐츠 아이템들은 섹션들 내에 저장된다. 특정 실시예들에서, 섹션들은 XML 파일들로서 저장된다. 섹션들은 애플리케이션들에 의해 처리될 때 파싱된다. 특정 실시예들에서, 섹션들이 저장됨에 따라 섹션들에 대해 행해지는 몇몇 정적 신택스 검사 존재한다. 자원들이 또한 데이터베이스 내에 저장된다.
사용자 그룹들이 선택적 콘텐츠 배포를 위해 사용되어, 콘텐츠가 특정 사용자 그룹에 속한 최종 사용자들에게만 이용가능하게 한다. 콘텐츠에 대한 액세스가 주어지거나 거부된 사용자 그룹들은 액세스가 제어되어야만 하는 콘텐츠에 대한 액세스 레벨들로서 정의된다. 그룹들은 프로덕션 애플리케이션으로부터 부가, 갱신 및 제어될 수 있다. 섹션 컴파일의 제1 단계가 또한 서버 상에서 행해진다. 컴파일의 제1 단계 동안, 고-레벨 콘텐츠가 컴파일되어 저-레벨 콘텐츠로 대체된다. 이는 웹 피드들을 페치하고 이것들을 섹션 내의 텍스트-박스들 및 메뉴들로 대체하는 것, 퀴즈 결과를 수집하는 것, 아티클 및 아티클 리스트들을 페치 및 삽입하는 것 그리고 이미지 및 다른 자원들에 대해 헤더를 섹션에 삽입하는 것을 포함한다. 프로덕션 애플리케이션은 또한 LDAP 프로토콜을 사용하여 시스템 사용자-프로듀서를 처리한다. 시스템 사용자-프로듀서들은 웹-인터페이스를 사용하는 프로듀서들이다. 서로 다른 애플리케이션들이 프로덕션 서버 상에서 프로젝트들로서 처리된다. 특정 실시예들에서, 각각의 프로젝트는 그 고유의 프로젝트 매니저, 및 그 특정 프로젝트에 의해 보여지는 것과 같은 시스템에 대한 정보를 포함하는 콘텍스트를 가진다. 콘텍스트는 프로젝트의 특정한 시스템 구성 버전을 포함하며, 이는 또한 XML 파일로서 저장될 수 있다. 콘텍스트는 또한 프로젝트가 사용할 수 있는 자원, 콘텐츠 아이템, 또는 섹션들에 대해 서버 및 매니저들의 다른 부분들에 대한 리스너들을 포함한다.
사용자 애플리케이션
사용자 애플리케이션은 최종 사용자 등록을 처리하고, 사용자 데이터를 저장하고 게이트웨이들을 서로 동기화한다. 사용자 애플리케이션은 또한 SMS들의 송신 및 수신을 처리한다. 사용자 애플리케이션은 메시지와 같은 개별 최종 사용자 정보를 처리한다. 특정 실시예들에서, 사용자 애플리케이션은 개별 사용자 서버로서 실행되고, TCP/IP를 통해 프로덕션 서버 및 게이트웨이 서버(들)과 통신하며, 최종 사용자들과의 SMS 통신을 다룬다. 사용자 애플리케이션의 주요 책임은 최종 사용들 및 유입 SMS들을 처리하는 것이다.
사용자 애플리케이션은 어떤 의미에서는 모바일 애플리케이션을 실행하는 모바일 디바이스인 최종 사용자들을 다룬다. 새로운 사용자들은 처음에 진입 애플리케이션(entrance application)에 연결하며, 상기 진입 애플리케이션은, 모바일 애플리케이션이 다운로드되어 최종 사용자 디바이스에 인스톨된 후 게이트웨이 애플리케이션으로 사용자들을 리다이렉션(redirection)한다. 사용자 애플리케이션들은 이후 게이트웨이 애플리케이션을 통해 최종 사용자와 통신할 수 있으며, 상기 게이트웨이 애플리케이션은 사용자 애플리케이션과 최종 사용자 사이에서 패킷들을 전달한다. 모든 통신은 패킷 포맷을 사용하여 TCP/IP 소켓들을 통해 행해진다.
처음에, 최종 사용자들은 그들의 폰 넘버로 식별되나, 새 최종 사용자가 모바일 애플리케이션을 인스톨하자마자, 새로운 사용자가 사용자 애플리케이션에 등록된다. 시스템에서, 사용자들은 이후 배정된 사용자 id에 의해 식별된다. id, 및 등록 날짜, 등록 정보, 최종 로그인 시간과 같은 다른 정보, 그리고 닉네임, 성별, 생일과 같은 선택적 정보가 데이터베이스에 저장된다. 선택적 정보는 종종 애플리케이션에 의해 수집되어, 이후 다른 애플리케이션들에서의 사용을 위해 코어 데이터베이스에 저장될 수 있다.
사용자가 시스템에 연결할 때, 연결을 나타내는 세션이 생성될 수 있다. 각각 세션에 대해, 그 세션 및 사용자에 대한 id들, 로그인 및 로그아웃 시간, 그리고 사용자가 연결해온 어드레스와 같은 정보가 저장된다.
사용자들은 어떤 수의 사용자 그룹들에 속할 수 있다. 그룹들은 특정 그룹에 속한 선택된 사용자들에게 콘텐츠 또는 이벤트들을 선택적으로 배포하기 위하여 사용된다. 사용자 그룹들이 웹 인터페이스로부터 부가 및 편집(edit)될 수 있다.
최종 사용자들은 또한, 텍스트 대답들, 이미지들, 비디오 파일들 또는 오디오 파일들과 같은 서로 다른 종류의 대답들을 송신할 수 있다. 사용자 애플리케이션은 파일들을 수신하고 이것들을 적합한 장소에(예를 들어, 파일 시스템 내에 파일들을, 데이터베이스 내에 다른 대답들을) 저장한다. 많은 대답 타입들이 또한 자원들로서 저장될 수 있고 이후 애플리케이션에 의해 사용될 수 있다. 예를 들어, 텍스트 대답들이 대답 리스트로서 디스플레이되어 채팅 또는 코멘트 리스트를 생성하거나, 또는 사진들이 자원들로서 저장되고 사진 앨범들로서 보여질 수 있다. 사용자들은 애플리케이션이 필요로 하는 경우에 파일들을 업로드할 수 있다. 사용자 애플리케이션은 이 파일들의 업로딩 및 저장을 처리한다. 파일이 이미지인지, 비디오 파일인지, 오디오 파일인지, 또는 어떤 다른 종류의 파일인지에 따라, 사용자 애플리케이션은 파일 시스템 또는 데이터베이스 내에 이들 서로 다른 종류의 파일들을 위한 적합한 폴더들, 테이블들, 또는 변수들을 생성하고 업로딩된 파일들을 그곳에 저장한다.
액세스 레벨은 어떤 사용자가 무엇에 대한 액세스를 갖는지를 제어한다. 대부분의 오브젝트들이 액세스 레벨; 콘텐츠 오브젝트들, 아티클들, 이벤트들 등을 가질 수 있다. 액세스 레벨은 사용자, 그룹 시간 또는 다른 것에 의존하여 액세스를 허용 또는 거부하기 위한 방법을 제공한다. 액세스 레벨은 오름차순으로 적용되는 다수의 액세스 규칙들을 포함할 수 있다.
사용자 서비스는 게이트웨이 애플리케이션들을 서로 동기화하는 것뿐만 아니라 SMS들의 송신 및 수신을 처리할 수 있다. 특정 실시예들에서, SMS 처리는, 서버에 플러그인될 수 있는 Java 서블릿을 사용하여 행해진다.
엔트리 애플리케이션
일부 실시예들에서, 진입 애플리케이션(또는 "엔트리 애플리케이션")이 게이트웨이들 사이의 로드 밸런싱을 처리하고 사용자들을 게이트웨이들로 리다이렉션한다. 모바일 애플리케이션이 엔트리 애플리케이션으로부터 다운로드될 수 있다.
진입 애플리케이션은 클라이언트 모바일 디바이스들로 하여금 모바일 애플리케이션을 수신할 수 있게 한다. 특정 실시예들에서, 진입 애플리케이션은 개별 서버로서 실행되고, TCP/IP를 통해 프로덕션 애플리케이션과, 그리고 HTTP를 통해 최종 사용자들과 통신한다. 진입 애플리케이션의 주요 책임은 모바일 애플리케이션의 배포를 처리하는 것이다.
몇몇 실시예들에서, 진입 애플리케이션이 모바일 애플리케이션의 배포를 처리한다. 최종 사용자는 일반적으로 등록 SMS를 폰 번호로 송신함으로써 애플리케이션을 주문할 것이다. 디바이스는 이후 사용자 에이전트 HTTP 헤더를 사용하여 식별된다(이것이 항상 가능한 것은 아니며, 이는, 오퍼레이터에 의해 사용되는 디바이스 또는 인터피어링 시스템(interfering system) 때문에, 일부 사용자들이 식별되지 않을 수 있음을 의미한다). 식별(identification)이 가능할 때, (사용자가 이미 존재하지 않는다면) 진입 서버는 사용자 애플리케이션을 이용하여 새 사용자를 등록하고, 상기 등록 및 상기 사용자를 식별하는 티켓을 생성한다. 티켓은 생성된 고유한 수치 id 및 랜덤 패스 구로 구성된다. 티켓을 이용하여, 고유한 다운로드 URL이 사용자를 위해 생성되고, 최종 사용자에게 SMS로 다시 송신된다. 다운로드 링크를 따라감으로써, 사용자는 적절한 버전의 모바일 애플리케이션을 디바이스에 다운로드 및 인스톨한다.
모바일 애플리케이션이 인스톨되면, 모바일 애플리케이션은 이후 진입 서버와 컨택한다. 진입 서버는 이후 게이트웨이 서버들을 위한 하나 이상의 어드레스로 응답하여, 게이트웨이들로 통신을 리다이렉션한다. 게이트웨이 서버들로의 어드레스들을 제어함으로써, 진입 애플리케이션은 게이트웨이들 상의 부하를 효과적으로 밸런싱할 수 있다. 특정 실시예들에서, 서로 다른 게이트웨이 어드레스들이 MIDlet JAD-파일에 저장되며, 상기 파일은 어떤 게이트웨이들이 그 특정 애플리케이션을 처리하도록 셋업되는지를 나타낸다.
게이트웨이 애플리케이션(들)
게이트웨이 애플리케이션은 최종 사용자들을 처리하고, 이들에게 콘텐츠를 송신하고 그리고 이들로부터의 유입 데이터를 수신한다. 시스템은 어떤 개수의 게이트웨이들을 포함할 수 있으며, 이는 시스템을 다수의 사용자들로 확장가능하게 한다. 게이트웨이들은 매우 안전하고 상세한 방법으로 각각의 연결된 사용자를 추적한다. 특정 실시예들에서, 하나 이상의 게이트웨이들이 하나 이상의 개별 서버들로서 운영되거나, 또는 하나 이상의 가상 머신들 내에서 운영된다.
게이트웨이 애플리케이션은 컴파일된 섹션들을 모바일 디바이스들에 송신한다. 특정 실시예들에서, 상기 애플리케이션이 개별 서버로서 운영되어, TCP/IP를 통해 다른 애플리케이션들과 통신한다. 게이트웨이는 또한 디바이스에 의존한 적?한 프로토콜(TCP/IP 또는 HTTP)을 통해 최종 사용자들과 통신할 수 있다. 게이트웨이 애플리케이션의 주요 책임은 다른 서버 애플리케이션들 및 최종 사용자들과의 연결 및 통신을 처리하는 것이다.
게이트웨이 애플리케이션은 프로덕션 애플리케이션, 사용자 애플리케이션, 및 코어 데이터베이스와의 통신뿐만 아니라, 최종 사용자들과의 거의 모든 통신을 처리한다. 최종 사용자들과의 몇몇 통신은 또한 모바일 애플리케이션의 배포와 같은 진입 애플리케이션에 의해 행해진다. 최종 사용자들과의 통신은, 최종 사용자 디바이스에 의존하여, 가능할 때 TCP/IP 소켓 연결을 통해 행해지거나, 대안적으로 HTTP를 통해 행해진다. 게이트웨이 애플리케이션은 최종 사용자들과의 연결을 유지하고, 모든 연결된 사용자들을 추적한다.
게이트웨이 애플리케이션은 최종 사용자들로 데이터를 송신 또는 최종 사용자들로부터 데이터를 수신하는 것을 처리하여, 정확한 사용자가 정확한 데이터를 얻게 하고, 그리고 어떤 리던던트 데이터터가 사용자들에게 송신되는 것을 방지해준다. 모든 통신은 패킷 포맷을 이용하여 패킷들로서 행해진다. 게이트웨이 애플리케이션은 확장가능하다. 게이트웨이 애플리케이션의 많은 인스턴스들은 필요할 경우 동시에 실행될 수 있다. 사용자 애플리케이션이 게이트웨이들 사이의 동기화를 처리한다. 섹션들이 게이트웨이에서 더 컴파일되어, 최종 사용자에게 송신되는 최종 XML을 생성한다. 섹션들은 여기서 두 개 이상의 단계들에서 컴파일되며, 사용자 특정된 고-레벨 오브젝트들이 최종 사용자 디바이스 상에 디스플레이될 수 있는 저-레벨 오브젝트들로 컴파일된다.
웹 인터페이스
웹 인터페이스는 콘텐츠를 부가 및 편집하기 위해 사용되는 단독형 웹 애플리케이션이다. 웹 인터페이스는 프로덕션 애플리케이션과만 통신하며, 프로듀서들과 서버들 사이의 인터페이스로서 사용된다. 웹-인터페이스는 웹 브라우저를 이용하여 어느 곳에서든지 액세스될 수 있다. 웹-인터페이스를 이용하여, 특정 프로젝트 하에서 조직되는 콘텐츠를 부가, 관리, 삭제, 및 편집하는 것이 가능하다.
웹-인터페이스는 새 아티클들, 퀴즈 아이템들 또는 퀴즈 스케줄들을 부가하기 위하여 그리고 어떤 기존 콘텐츠 아이템들을 보기 위하여 사용될 수 있는 콘텐츠 매니저를 제공할 수 있다. 아티클과 같은 특정 콘텐츠가 피드들로부터 자동적으로 생성될 수 있으므로, 콘텐츠 매니저는, 서로 다른 콘텐츠 카테고리들(아티클 및 퀴즈 질문들이 선택적으로 어떤 카테고리에 속할 수 있음)을 제어하는 것뿐만 아니라 생성된 아티클들을 보고 편집하기 위한 훌륭한 인터페이스를 제공한다. 그래픽 방식으로 퀴즈 질문들을 생성 및 편집하는 것이 또한 가능하므로, 예컨대 조건적 질문들을 정의하는 옵션을 제공함으로써 새로운 퀴즈들 및 설문조사들을 생성하는 것이 더 쉬워진다. 이러한 질문들은 단지, 사용자가 이전 질문에 어떻게 답했는지에 근거하여, 다음 질문들로서 보여진다.
특정 실시예들에서, 섹션 매니저는 섹션들을 생성, 편집 및 삭제하기 위한 웹 인터페이스의 주 인터페이스이다. 새 섹션들이 빌트-인 에디터를 이용하여 웹-인터페이스에 직접 생성되거나 또는 zip 아카이브로서 임포팅된다. 특정 실시예들에서, 모든 새 애플리케이션이 새 프로젝트에서 생성된다. 섹션이 저장될 때, 부가 또는 편집된 후, 상기 섹션은 프로덕션 서버로 송신되고 파싱된다. 파스 에러들이 웹 인터페이스로 다시 보고되어, 에러들이 정정될 수 있게 한다. 퀴즈들에 대해, 여기에서 퀴즈 오브젝트들을 제어하는 것이 또한 가능하며, 그럼으로써 퀴즈들을 시작, 정지 및 싱크(sync)할 수 있다.
특정 실시예들에서, 웹 인터페이스는 자원 관리자를 제공한다. 자원 관리자는 기존 자원들을 브라우징하는 것뿐만 아니라 자원들을 부가 및 삭제할 수 있게 한다. 예컨대 프로듀서에 의해 새 자원이 부가될 때, 자원 파일이 웹-인터페이스를 통해 서버로 업로드될 수 있다. 자원의 헤더 파일 또한 웹-인터페이스에서 생성되고 실제 자원 파일과 함께 업로드된다. 대안적인 자원들, 예를 들어 서로 다른 사이즈들의 공급 이미지들이 또한 정의되어, 이들은 어떠한 사이즈의 디스플레이에서도 양호하게 보일 것이다.
웹 인터페이스는 또한 그룹 관리자를 포함할 수 있다. 그룹 관리자를 통해, 그룹들에 사용자들을 부가, 브라우즈, 삭제하는것 뿐만아니라, 사용자 그룹들을 부가, 브라우즈, 삭제하는 것이 가능하다.
특정 실시예들에서, 웹 인터페이스는 테마 관리자를 가진다. 테마들은 테마 관리자를 통해 부가, 편집 및 삭제될 수 있다. 특정 실시예들에서, 테마들이 빌트-인 에디터를 이용하여 XML로서 편집되고, 그리고 섹션들에 대해 유사하게 처리된다.
웹 인터페이스를 사용하여 많은 종류의 통계를 보는 것이 또한 가능하다. 통계로서 제공될 수 있는 데이터는, 시간에 따른 사용자들의 수, 사용자 위치, 및 사용자 활동과 같은 기본 사용 통계; 모바일 디바이스들의 모델 및 상기 디바이스들이 어떤 기술을 지원하는지; 업로드된 이미지, 비디오, 오디오, 및 텍스트, 날짜, 선택, 폼 및 수치 대답들과 같은 사용자 제출 데이터; 퀴즈의 상위 리스트와 같은 퀴즈 및 설문조사의 결과; 또는 등록된 사용자들 및 그들의 세션, 등록 티켓들 및 SMS 트래픽을 포함한다.
특정 실시예들에서, 각각의 새 애플리케이션은 서버 상에서 콘텐츠 생성 측면에서 별개의 프로젝트로서 처리된다. 웹 애플리케이션에서, 특정 프로젝트는, 보여지는 그 프로젝트에 특정된 기능만을 가지고, 항상 선택된다. 새 프로젝트들이 슈퍼사용자들에 의해 웹 인터페이스로부터 생성될 수 있다. 시스템 사용자들(즉, 프로듀서들)에게는 이후 상기 프로젝트들에 대한 액세스를 제어하는 승인(permission)이 주어질 수 있다. 이러한 식으로, 시스템 사용자들에게 단지 특정 프로젝트에 대한 액세스를 주는 것이 가능하다. 프로젝트들은, 웹-인터페이스가 그 프로젝트를 사용하도록 설정되면 그 특정 프로젝트에 대한 섹션들, 자원들, 테마들 및 콘텐츠만이 보여진다는 점에서 기술(delineation)될 수 있다. 모든이가 사용할 수 있는 디폴트 프로젝트가 존재한다. 슈퍼 사용자들이 또한 웹-인터페이스로부터 프로젝트들을 위한 시스템 구성을 편집할 수 있다.
8. 데이터베이스
본 발명의 특정 실시예들에서, 데이터가 SQL 데이터베이스를 사용하여 저장된다. 특정 실시예들에서, 유일한 예외는 파일 시스템 내에 직접 저장되는 자원 파일들이다. 특정 실시예들에서, 프로덕션 데이터베이스(종종 프로젝트 데이터베이스로 지칭됨) 및 코어 데이터베이스의 두 개의 데이터베이스가 존재한다. 일부 실시예들에서, 프로덕션 데이터베이스는 두 개 이상의 데이터베이스들을 망라하는 구성이다. 특정 실시예들에서, 프로덕션 데이터베이스는 프로젝트 데이터베이스들을 포함하며, 여기서 각각의 프로젝트 데이터베이스가 하나의 프로젝트에 대응한다. 각각의 프로젝트는 서로 다른 데이터베이스들(즉, 프로젝트 대응하는 프로젝트 데이터베이스)을 사용할 수 있고, 이들은 모두 동일한 서버 상에 배치되거나 서로 다른 서버들에 분산되어 있을 수 있다. 각각의 프로젝트는 그것의 고유한 구성 파일을 가질 수 있다.
특정 실시예들에서, 서버는 다른 모든 프로젝트들과 공유되는 몇몇 정보를 포함하는 디폴트 프로젝트를 갖는다. 모든 MIDlet들이 디폴트 프로젝트 데이터베이스에 저장될 수 있다. 코어 데이터베이스는 데이터 개별 사용자들, 그룹들, 최종 사용자 데이터(폰 번호, 닉네임, 사용자-생성 데이터 등), 최종 사용자 세션 로그들, 및 SMS 로그들을 포함한다.
(프로덕션 애플리케이션에 의해 사용되는) 프로덕션 데이터베이스는 구성, 섹션, 콘텐츠 아이템, 자원, 테마 등과 같은 콘텐츠를 포함한다.
9. 커맨드 , 타겟 , 호출가능한 오브젝트들 마크로들
특정 실시예들에서, 본 발명은 모바일 디바이스들에서 실행되는 타겟들 및 호출가능한 오브젝트들을 제공한다. 특정 실시예들에서, 본 발명은 커맨드들을 제공한다. 커맨드들은 MIDP 커맨드 오브젝트들과 유사하나, 추가의 기능을 제공한다. 커맨드의 비쥬얼 표현(visual presentation)에 부가하여, 타입 및 우선순위(priority)가 또한 특정될 수 있다.
몇몇 플래폼들은 본래의 특징으로서 커맨드들을 포함하지 않으며, 따라서 본 발명은 이들과 같은 플래폼에서 실행되는 그것의 커맨드들을 제공한다.
활성화 될 때, 커맨드는 타겟을 호출할 수 있으며, 상기 타겟은 호출가능한 콘텐츠 오브젝트, 또는 일부 특수 동작을 기술하는 마크로이다.
타겟이 호출가능한 오브젝트의 id라면, 상기 오브젝트가 호출되고 적합한 동작이 취해진다. 특정 실시예들에서, 상기 동작은 스크린 상에 디스플레이가능한 오브젝트를 디스플레이 하는 것, 오디오 또는 비디오 클립을 재생하는 것, 사진을 업로드하는 것, 또는 SMS를 송신하는 것을 포함할 수 있다.
호출가능한 오브젝트는 호출될 수 있는 오브젝트이다. 각각의 호출가능한 오브젝트는 그것이 어떻게 호출될 수 있는지에 대한 정보를 포함하며, 상기 정보는 고유하게 식별될 수 있다. 클라이언트 애플리케이션들에서의 사용자 상호작용은 모바일 디바이스 스크린 상에 디스플레이되는 디스플레이가능한 오브젝트들에 첨부(attach)된 호출가능한 커맨드들에 의해 인에이블된다. 커맨드들은 또한 메뉴 아이템들 및 아이템 오브젝트들과 같은 디스플레이 불가능한 오브젝트들에 첨부될 수 있다. 모바일 디바이스에 따라, 사용자 상호작용은 서로 다른 방식들로 수행된다. 예를 들어, 일부 디바이스들은 입력 디바이스들로서 터치 스크린을 사용하고, 다른디바이스들은 버튼을 사용한다. 최종 사용자 상호작용이 서로 다른 모바일 디바이스들에 대해 조정될 수 있다.
커맨드 오브젝트들은 그들의 타겟에 대한 정보를 스스로 포함하지 않는다. 이 정보는 커맨드와 관련된 디스플레이가능한 (오브젝트)에 특정된다. 커맨드들은 메뉴, 커맨드 바에 포함되거나, 버튼들에 직접 매핑될 수 있다.
섹션 내에 커맨드들을 정의할 때, 커맨드들에 우선순위들이 할당되어, 클라이언트 애플리케이션으로 하여금 그들의 상대적 중요를 게이지(guage)할 수 있게한다. 커맨드들은 때때로 서로 다른 모바일 디바이스들 상에서 서로 다르게 처리되며, 따라서, 클라이언트 애플리케이션의 외관 및 느낌이 어느 정도 달라질 수 있고, 최종 사용자 상호작용이 각각의 디바이스에 대해 조정될 수 있다.
활성 커맨드들은 현재 온-스크린에 있는 디스플레이가능한 오브젝트들과 관련된다. 어떤 개수의 커맨드들이 동시에 활성일 수 있다.
호출가능한 오브젝트들은 디스플레이가능한 오브젝트들, 입력 오브젝트들, 퀴즈/설문조사 오브젝트들, 컴포짓 타겟들, 및 플래폼 요청들을 포함한다. 디스플레이가능 오브젝트는 스크린 또는 캔버스로서 모바일 디바이스 상에 디스플레이될 수 있고, 사용자 입력을 위한 커맨드를 생성할 수 있는 컨텐츠 오브젝트를 나타낸다. 입력은 텍스트, 이미지, 또는 오디오 클립과 같은 최종 사용자 입력을 통해 생성된 오브젝트이다. 퀴즈 및 설문조사는 퀴즈-타입 게임, 통계 수집 또는 마케팅 리서치를 위한 질문들을 포함하는 특별한 콘텐츠 오브젝트들이다. 컴포짓 타겟은 복수의 동작들이 단일 커맨드에 의해 수행될 수 있게 한다. 플래폼 요청이 플래폼 요청들을 호출하며, 이는 예컨대, 웹 브라우저를 오픈하는 것을 포함할 수 있다.
일부 실시예들에서, 본 발명은 마크로들을 제공한다. 마크로는 디바이스 상의 하드웨이 기능들 또는 내부 로직을 기술하기 위해 사용되고, 그리고 커맨드들에 의해 호출될 수 있다.
타겟이 마크로이면, 마크로가 실행된다. 이는, 예를 들어, 백라이트를 플래싱하거나, 진동을 야기하거나, 이전의 디스플레이가능한 오브젝트로 되돌아가거나(논리적 회귀(logical back)), 또는 그와 유사한 동작을 할 수 있다. 마크로들은 본래의 모바일 기능들에 대해 추상 계층이다. 마크로들의 사용은, 마크로 커맨드들의 실제 처리가 각각의 디바이스 상에서 별개로 수행된다 하더라도, 단일 섹션들 및 콘텍스트들이 광범위한 모바일 디바이스들에 걸쳐 사용될 수 있게 한다.
마크로들은 스크린 및 네비게이션, GPS, 연결, 오디오, 백라이트, 진동 및 메모리와 같은 하드웨어 관련 커맨드들을 위해, 그리고 몇몇 로직 기능들을 위해 사용된다. 예를 들어, "런 타겟"은 클라이언트 애플리케이션 상의 별개의 쓰레드 내에서 타겟을 실행하는 마크로일 수 있다. 이는 디바이스를 잠글 수 있는 기능들을 실행하는데 유용하다.
참조로 포함된 문헌
본 발명의 시스템, 방법, 및 디바이스는 동일 발명자에 의해 2011년 10월 7일자로 출원된, 발명의 명칭이 "SCALABLE SYNCHRONIZATION OF EVENTS AMONG SERVER AND CLIENTS WITH VARYING LAG-TIMES"인 미국 특허 출원 번호 제13/269,211호(대리인 관리번호:29090/7)에도 기술되어 있으며, 상기 출원은 또한 2010년 10월 8일자로 출원된 미국 가특허 출원 제61/391,272호에 대한 우선권을 주장하고, 본 명세서에 그 전체가 참조로서 포함된다.
본 발명의 시스템, 방법, 및 디바이스는 동일 발명자에 의해 2011년 10월 7일자로 출원된, 발명의 명칭이 "DISTRIBUTION OF CONTENT AND BEHAVIOR TO DISPARATE PLATFORMS"인 미국 특허 출원 번호 제13/269,269호(대리인 관리번호:29090/9)에도 기술되어 있으며, 상기 출원은 또한 2010년 10월 8일자로 출원된 미국 가특허 출원 제61/391,272호에 대한 우선권을 주장하고, 본 명세서에 그 전체가 참조로서 포함된다.
등가물
본 명세서에서 보여지고 설명된 것에 부가하여 본 발명의 다양한 수정들 및 그것의 많은 추가의 실시예들이, 본 명에서에서 인용된 논문 및 특허 문헌 참조들을 포함하여 본 명세서의 전체 내용으로부터 당업자에게 자명해질 것이다. 본 명세서의 내용은 그 다양한 실시예들 및 등가물에서 본 발명의 실행에 대해 적응될 수 있는 중요한 정보, 예시, 및 안내를 포함한다.
예시
예시 1: 퀴즈
특정한 예시적 실시예들에서, 본 발명은 퀴즈를 행하기 위한 툴을 제공한다. 퀴즈는 전체 3 단계의 컴파일을 필요로 한다. 이 예시는, "소스"섹션(즉, 웹-인터페이스를 통해 진입된 섹션)으로 시작하여, 두 가지 질문을 갖는 간단한 퀴즈가 어떻게 컴파일되는지를 보여준다.
<section id="1" name="Quiz" main="menu1" next_id="7">
<command id="select_cmd" label="Select" type="O " priority="0"/>
<command id="ok_cmd" label="O " type="O " priority="0"/>
<command id="back_cmd" label="Back" type="BACK" priority="0"/>
<command id="answer_cmd" label="Answer" type="O " priority="0"/>
<command id="exit_cmd" label="Exit" type="EXIT" priority="0"/>
<menu id="menu1" default_cmd="select_cmd" title="">
<cmd id="select_cmd" target=" select"/>
<menuitem id="menuiteml" label="Play" target="textbox"/>
</menu>
<quiz id="quiz1" name="Quiz Object" schedule="1" answer_cmd="select_cmd" end_target=" back"/>
<textbox id="textbox" title="" text="Wait for questions. ">
<cmd id="back_cmd" target=" close"/>
</textbox>
<compositetarget id="compositetarget5" label="Back and to game screen">
<invoke target=" back"/>
<invoke target="textbox"/>
</compositetarget>
<compositetarget id="auto_ctarget50" label="__answer and__back" auto_generated="true">
<invoke target="__answer"/>
<invoke target="__back"/>
</compositetarget>
<header>
<sectionheader id="1" name="Quiz" alias="7" num_id="1"/>
</header>
</section>
상기 섹션은 3 개의 콘텐츠 아이템들(퀴즈 스케쥴 및 2개의 퀴즈 질문들)을 포함한다.
<schedule round="1" timed="false" id="1" name="test" start_publish="07.05.2010 10:32:00" stop_publish="14.11.2012 14:29:35">
<event id="2" timecode="00:00:00" answer_time="00:00:09" wait_for_correction_time="00:00:01" show_correction_time="00:00:00"/>
<event id="3" timecode="00:00:01" answer_time="00:00:12" wait_for_correction_time="00:00:01" show_correction_time="00:00:00"/>
</schedule>
Figure 112013040572804-pct00013
<quizitem type="choice" has_help="66" id="2" name="Question 1" start_publish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" mode="ONE_CORRECT">
<alternative id="1" text="Alternative 1" points="1.000000"/>
<alternative id="2" text="Alternative 2" points="0.000000"/>
<alternative id="3" text="Alternative 3" points="0.000000'/>
</quizitem>
Figure 112013040572804-pct00014
<quizitem type="choice" has_help="66" id="3" name="Question 2" start_publish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" mode="ONE_CORRECT">
<alternative id="1" text="A" points="0.000000'7>
<alternative id="2" text="B" points="1.000000'7>
<alternative id="3" text="C" points="0.000000'7>
</quizitem>
단계 1 후, 컴파일 및 파싱이 섹션 요소들을 재순서화(reorder)되게 할 수 있고, 네스팅된 요소들(예컨대, 메뉴 아이템들)이 별개의 XML 요소들로 파싱되고/되거나 그들의 네스팅을 상실할 수 있다. 그러나, 이러한 것들은 일반적으로 표면적 변화(cosmetic change)이다. 스케줄 및 퀴즈 질문 내용 아이템들이 퀴즈 데이터 XML 요소 내에 포함된 섹션으로 삽입되므로 주 컴파일 효과는 퀴즈 그 자체에 대한 것이다. 일부 속성들이 (파싱으로 인하여)재순서화되었을 수 있으나 스케줄 및 질문 콘텐츠는 불변으로 유지될 것이다.
위의 퀴즈 예의 단계 1 컴파일은 결과적인 XML 데이터를 생성한다.
<section id="1" main="menu1" style="" theme="">
<header>
<sectionheader id="1" name="Quiz" alias="7" num_id="1"/>
</header>
<command id="answer_cmd" label="Answer" type="O " priority="0"></command>
<compositetarget id="auto_ctarget50">
<invoke target="__answer"/>
<invoke target="__back"/>
</compositetarget>
<command id="back_cmd" label="Back" type="BACK" priority="0"></command>
<compositetarget id="compositetarget5">
<invoke target="__back"/>
<invoke target="textbox"/>
</compositetarget>
<command id="exit_cmd" label="Exit" type="EXIT" priority="0"></command>
<menu id="menu1" default_cmd="select_cmd" title="" select_cmd="select_cmd">
<cmd id="select_cmd" target="__select"/>
<item id="menu1.menuitem1" target="textbox"/>
</menu>
<menuitem id="menu1.menuitem1" label="Play" icon="" text=""></menuitem>
<command id="ok_cmd" label="OK" type="OK" priority="0"></command>
<quiz id="quiz1" name="Quiz Object" category= 1 select_cmd" end_target="
""schedule=" " answer_cmd="
__back" help_cmd="" help_target="" hide_cmd="" hide_target="__back" close_cmd="" close_target="__close
"answer_once="false" empty_target="" use_hide_targets=" false" change_answer="false" client_side="false">
<quizdata>
<schedule id="1" name="test" start_publish="07.05.2010 10:32:00" stop_publish="14.1 1.2012 14:29:35" folder="0" type="schedule" "false" style="" default_cmd="" timed=" false 1 has_help=" round=" " advance_time="45000">
<event id="2" timecode="00:00:00.000" answer_time="00:00:09.000" wait_for_correction_time= "00:00:01.000" show_correction_time="00:00:00.000">
<quizitem id="2" name="Question 1" start_publish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" folder="0" type="choice" has_help="false" style="" default_cmd="" mode="ONE CORRECT" max_select="1">
<alternative id="1" text="Alternative 1" points="1.000000"/>
<alternative id="2" text="Alternative 2" points="0.000000"/>
<alternative id="3" text="Alternative 3" points="0.000000"/>
</quizitem>
</event>
<event id="3" timecode="00:00:01.000" answer_time="00:00:12.000" wait_for_correction_time= "00:00:01.000" show_correction_time="00:00:00.000">
<quizitem id="3" name="Question 2" start_publish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" folder="0" type="choice" has_help="false" style="" default_cmd="" mode="ONE CORRECT"
max_select="1">
<alternative id="1" text="A" points="0.000000"/>
<alternative id="2" text="B" points="1.000000"/>
<alternative id="3" text="C" points="0.000000"/>
</quizitem>
</event>
</schedule>
</quizdata>
</quiz>
<command id="select_cmd" label="Select" type="OK" priority="0"></command>
<textbox id="textbox" default_cmd="" title="" text=" Wait for questions.">
<cmd id="back_cmd" target=" close"/>
</textbox>
</section>
단계 2 컴파일 후, 퀴즈 데이터 XML 요소들이 유지되고, 선택 입력 오브젝트들이 자동-발생(auto-generation)되어 컴파일된 퀴즈 내의 질문들을 나타낸다. 콘텐츠 아이템들 및 퀴즈 오브젝트들 둘 모두가 고-레벨 오브젝트들이므로, 모바일 애플리케이션 상에서의 실행을 위하여 저-레벨 자동-발생 선택 입력 오브젝트들이 필요하다.
위의 퀴즈 예의 단계 2 컴파일은 결과적인 XML 데이터를 생성한다.
<section id="1" main="menu1" style="" theme="">
<header>
<sectionheader id="1" name="Quiz" alias="7" niun_id="1"/>
</header>
<command id="answer_cmd" label="Answer" type="OK" priority="0">
</command>
<compositetarget id="auto_ctarget50">
<invoke target="__answer"/>
<invoke target="__back"/>
</compositetarget>
<command id="back_cmd" label="Back" type="BACK" priority="0">
</command>
<compositetarget id="compositetarget5">
<invoke target="__back"/>
<invoke target="textbox"/>
</compositetarget>
<command id="exit_cmd" label="Exit" type="EXIT" priority="0">
</command>
<menu id="menu1" default_cmd="select_cmd" title="" select_cmd="select_cmd">
<cmd id="select_cmd" target=" select"/>
<item id="menu1.menuitem1" target="textbox"/>
</menu>
<menuitem id="menu1. menuitem1" label="Play" icon="" text="">
</menuitem>
<command id="ok_cmd" label="OK" type="OK" priority="0">
</command>
<quiz id="qtiiz1" name="Quiz Object" category= 1 select_cmd" end_target=""" schedule=" " answer_cmd="
__back" help_cmd="" help_target="" hide_cmd="" hide_target="__back" close_cmd="" close_target="__close
"answer_once="false" empty_target="" use_hide_targets=" false" change_answer="false" client_side="false">
<quizdata>
<schedule id="1" name="test" start_publish="07.05.2010 10:32:00" stop_publish="14.1 1.2012 14:29:35"
folder="0" type="schedule" "false" style="" default_cmd="" timed=" false 1 has_help=" round=" " advance_time="45000">
<event id="2" timecode="00:00:00.000" answer_time="00:00:09.000" wait_for_correction_time= "00:00:01.000" show_correction_time="00:00:00.000">
<quizitem id="2" name="Question 1" start jublish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" folder="0" type="choice" has_help="false" style="" default_cmd="" mode="ONE CORRECT" max_select=" 1">
<alternative id="1" text="Alternative 1" points="1.000000"/>
<alternative id="2" text="Alternative 2" points="0.000000"/>
<alternative id="3" text="Alternative 3" points="0.000000"/>
</quizitem>
</event>
<event id="3" timecode="00:00:01.000" answer_time="00:00:12.000" wait_for_correction_time= "00:00:01.000" show_correction_time="00:00:00.000">
<quizitem id="3" name="Question 2" start_publish="01.01.1970 02:00:00" stop_publish="01.01.1970 02:00:00" folder="0" type="choice" has_help="false" style="" default_cmd="" mode="ONE CORRECT" max_select=" 1">
<alternative id="1" text="A" points="0.000000"/>
<alternative id="2" text="B" points="1.000000"/>
<alternative id="3" text="C" points="0.000000"/>
</quizitem>
</event>
</schedule>
</quizdata>
</quiz>
<choiceinput id="quiz1.2" default_cmd="select_cmd" initial_value="" answer_macro="__redirect(__schedule(l,l),2) "answer_rule="ADD" label="Question 1">
<accesslevel/>
<cmd id="select_cmd" target="quiz1.ans2"/>
<item id="1" label="alternative 1" selected="false" icon="" style="" text=" ">
</item>
<item id="2" label="alternative 2" selected="false" icon="" style="" text=" ">
</item>
<item id="3" label="alternative 3" selected="false" icon="" style="" text=" ">
</item>
</choiceinput>
<choiceinput id="quiz1.3" default_cmd="select_cmd" initial_value="" answer_macro="
__redirect(__schedule(l,l),3)" answer_rule="ADD" label="Question 2">
<accesslevel/>
<cmd id="select_cmd" target="quiz1.ans3"/>
<item id="1" label="A" selected="false" icon="" style="" text=" ">
</item>
<item id="2" label="B" selected="false" icon="" style="" text=" ">
</item>
<item id="3" label="C" selected="false" icon="" style="" text=" ">
</item>
</choiceinput>
<command id="select_cmd" label="Select" type="O " priority="0">
</command>
<textbox id="textbox" default_cmd="" title="" text="Wait for questions. ">
<cmd id="back_cmd" target=" close"/>
</textbox>
</section>
단계 3 컴파일은 개별 패킷들이 클라이언트에 전달되기 전에 개별 패킷들에 대해 수행된다.
하기의 예에서, 빈 섹션(empty section)이 클라이언트로 송신된다. 섹션 정보가 이미 클라이언트에 송신되었고 그후로 변경되지 않았다. 따라서, 섹션 id, 헤더 등에 대한 정보를 포함하는 어떠한 패킷들도 송신되지 않는다. 추가로, 나머지 모두가 동시에 추가되었으므로, 하기의 XML 요소들 각각은 개별 패킷들로서 송신된다. 하나의 XML 요소만이 변경되었으면, 단지 관련된 패킷만이 컴파일되어 클라이언트에 송신된다. 이 경우에 단일 XML 요소는 커맨드, 메뉴, 메뉴 아이템, 선택 입력 등일 수 있다.
여기에서 보여진 것과 같은 단계 3 컴파일의 주요 효과는 실제 퀴즈 오브젝트의 제거이다.
퀴즈 오브젝트들 및 콘텐츠 아이템들은 클라이언트에 의해 판독될 수 없는 고-레벨 오브젝트들이다. 단계 2 컴파일 단계에서, 선택 입력들이 이미 생성되어 클라이언트 상에서 퀴즈 질문들로서 동작한다. 따라서, 퀴즈 오브젝트들은 더 이상 필요하지 않고 단계 3에서 제거된다. 추가로, 최종 사용자 입력을 인에이블하기 위하여, 컴포짓 타겟들의 세트가 자동적으로 생성된다(컴포짓 타겟들은 최종 사용자의 대답이 어떻게 처리되고 서버에 업로드되는지를 규정하는 커맨드들이다).
위의 퀴즈 예의 단계 3 컴파일은 결과적인 XML 데이터를 생성한다.
<clientdata>
<command id="answer_cmd" label="Answer" type="OK" priority="0">
</command>
<compositetarget id="auto_ctarget50">
<invoke target="__answer"/>
<invoke target="__back"/>
</compositetarget>
<command id="back_cmd" label="Back" type="BACK" priority="0">
</command>
<compositetarget id="compositetarget5">
<invoke target="__back"/>
<invoke target="textbox"/>
</compositetarget>
<command id="exit_cmd" label="Exit" type="EXIT" priority="0">
</command>
<menu id="menu1" default_cmd="select_cmd" title="" select_cmd="select_cmd">
<cmd id="select_cmd" target="__select"/>
<item id="menu1.menuitem1" target="textbox"/>
</menu>
<menuitem id="menu1 .menuitem1" label="Play" icon="" text="">
</menuitem>
<command id="ok_cmd" label="OK" type="OK" priority="0">
</command>
<compositetarget id="quiz1.ans2">
<accesslevel/>
<invoke target="__answer"/>
<invoke target="__back"/>
<invoke target="quiz1.3"/>
</compositetarget>
<compositetarget id="quiz1.ans3 ">
<accesslevel/>
<invoke target="__answer"/>
<invoke target="__msg(__counterhit(2))"/>
<invoke target="__back"/>
</compositetarget>
<compositetarget id="quiz1">
<accesslevel/>
<invoke target="quiz1.2"/>
<invoke target="__msg(__counterhit( 1 ))"/>
</compositetarget>
<choiceinput id="quiz1.2" default_cmd="select_cmd" initial_value="" answer_macro="__redirect(__schedule(l,l),2)"answer_rule="ADD" label="Question 1">
<accesslevel/>
<cmd id="select_cmd" target="quiz1.ans2"/>
<item id="1" label="Alternative 1" selected="false" icon="" style="" text=" ">
</item>
<item id="2" label="alternative 2" selected="false" icon="" style="" text=" ">
</item>
<item id="3" label="alternative 3" selected="false" icon="" style="" text=" ">
</item>
</choiceinput>
<choiceinput id="quiz1.3" default_cmd="select_cmd" initial_value="" answer_macro="__redirect(__schedule(l,l),3)" answer_rule="ADD" label="Question 2">
<accesslevel/>
<cmd id="select_cmd" target="quiz1.ans3"/>
<item id="1" label="A" selected="false" icon="" style="" text=" ">
</item>
<item id="2" label="B" selected="false" icon="" style="" text=" ">
</item>
<item id="3" label="C" selected="false" icon="" style="" text=" ">
</item>
</choiceinput>
<command id="select_cmd" label="Select" type="OK" priority="0">
</command>
<textbox id="textbox" default_cmd="" title="" text="Wait for questions. ">
<cmd id="back_cmd" target="__close"/>
</textbox>
</clientdata>
예시 2: 번역( translation )
콘텐츠 디스플레이는 또한 최종 사용자 설정 및/또는 옵션을 통해 관리될 수 있다. 예를 들어, 앱은 "번역"이라 칭해지는 것을 사용하여, 최종 사용자들에게 언어 선택을 제공할 수 있다. 번역은 콘텐츠 오브젝트들뿐만 아니라 라벨들을 변경(예를 들어, 위의 언어 예)하기 위하여 사용될 수 있고, 그리고 콘텐츠가 모바일 애플리케이션으로 송신되기 바로 전에 (단계 3 컴파일 후에) 부가된다. 어떤 번역 옵션이 수행될지에 대한 선택은 모바일 디바이스로부터 업로드된 값을 매칭함으로써(즉, 어떤 종류의 플래폼을 클라이언트가 구동하고있는지, 클라이언트 디스플레이 사이즈 등), 최종 사용자 입력(즉, 변역이 리스트로부터 선택됨)을 통해, 또는 자동적으로 관리될 수 있다.
선택 번역에 관한 정보가 섹션 헤드에 저장된다. 번역은 번역 섹션을 포함하며, 이는 사용되는 번역, 및 그에 부가하여 대응하는 번역을 식별한다. 번역은 id, 및 "번역(translate)" 요소들의 세트를 포함한다. 번역 요소는 번역될 오브젝트의 id, 및 무엇이 번역될 것인지 둘 모두를 정의한다. 콘텐츠 오브젝트들은 무엇이 번역될 수 있는지 및 어떻게 그것이 행해질 수 있는지에 대한 규칙들을 포함한다. 가장 일반적인 것은 라벨 번역(대부분의 오브젝트에 대해 가능함), 및 디스플레이가능한 오브젝트들에 커맨드들을 부가/제거하는 것이다. 단일 섹션이 몇개의 번역을 정의할 수 있다.
예를 들어,
<translationselect input="langselect">
<ans id="1" translation="pt"/>
</translationselect>
<translation id="pt">
<translate id="sel_cmd" label="Selecionar"/>
<translate id="continue_cmd" label="Continuar"/>
<translate id="styletexts">
<attribute name="cmd-more-item-txt" value="Opcoes"/>
</translate>
</translation>
위의 예에서, 최종 사용자는 "langselect"라 칭해지는 입력으로부터 id 1을 갖는 대답을 선택함("langselect"라 칭해진 선택 입력의 제2 옵션)으로써 애플리케이션의 언어를 포르투갈어로 설정할 수 있다. 번역 아이템들은 스타일 클래스 내의 속성의 값뿐만 아니라 두 개의 커맨드들의 라벨들을 변경한다. 보통, 라벨들은 영어로 되어 있으나, 사용자에 의해 포르투갈어가 선택된다면, 콘텐츠가 송신되기 전에, 콘텐츠와는 별개로, 라벨들이 번역되고, 애플리케이션은 정확히 동일하게 유지된다.

Claims (31)

  1. 콘텐츠를 관리하기 위한 시스템으로서,
    웹 인터페이스에 연결되어 있으며 프로듀서로 하여금 상기 웹 인터페이스를 통해 콘텐츠를 포함하는 소스 섹션을 생성하게 하도록 구성된 프로덕션 서버와;
    메모리, 프로세서, 및 입력 디바이스를 포함하고 상기 프로덕션 서버와 통신하며 클라이언트로부터의 요청에 응답하여 상기 소스 섹션을 수신하도록 구성된 게이트웨이 서버와, 상기 프로세서는
    상기 소스 섹션을 상기 메모리에 저장하고,
    어떤 클라이언트에 의해 이전에 액세스된 콘텐츠에 대한 후속적인 클라이언트로부터의 요청에 응답하여 상기 소스 섹션을 판독하고,
    상기 후속적인 클라이언트로부터의 상기 요청에 응답하여 상기 콘텐츠를 포함하는 동적 섹션을 기록하고,
    상기 동적 섹션을 상기 콘텐츠를 포함하는 컴파일된(compiled) 섹션으로 컴파일하고, 그리고
    상기 컴파일된 섹션을 제1 클라이언트 큐로 송신하도록 구성되며; 그리고
    모바일 디바이스를 포함하여 구성되며,
    상기 모바일 디바이스는
    상기 게이트웨이 서버로의 소켓 연결을 확립하고,
    상기 게이트웨이 서버에 리스너(listener)로서 등록하고, 그리고
    상기 컴파일된 섹션을 수신하도록 구성된 것을 특징으로 하는 콘텐츠를 관리하기 위한 시스템.
  2. 제1 항에 있어서,
    그룹 데이터 아이템, 제1 개별 데이터 아이템, 및 제2 개별 데이터 아이템을 포함하는 코어 데이터베이스를 더 포함하며, 그리고
    상기 프로세서는
    상기 소스 섹션 및 상기 그룹 데이터 아이템을 판독하고;
    상기 콘텐츠 및 상기 그룹 데이터 아이템을 포함하도록 상기 동적 섹션을 기록하고; 그리고
    상기 동적 섹션 및 상기 제1 개별 데이터 아이템을 상기 컴파일된 섹션으로 컴파일하고; 그리고
    상기 동적 섹션 및 상기 제2 개별 데이터 아이템을 상기 컴파일된 섹션과는 다른 제2 컴파일된 섹션으로 컴파일하도록 더 구성되고, 그리고
    상기 컴파일된 섹션은 복수의 바이너리 패킷들을 포함하며, 상기 복수의 바이너리 패킷들은 상기 콘텐츠, 상기 그룹 데이터 아이템, 및 상기 제1 개별 데이터 아이템을 포함하고, 그리고 상기 제2 컴파일된 섹션은 제2 복수의 바이너리 패킷들을 포함하고, 상기 제2 복수의 바이너리 패킷들은 상기 콘텐츠, 상기 그룹 데이터 아이템, 및 상기 제2 개별 데이터 아이템을 포함하는 것을 특징으로 하는 콘텐츠를 관리하기 위한 시스템.
  3. 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치로서,
    메모리와;
    상기 메모리와 통신하며, 콘텐츠를 포함하는 소스 섹션을 수신하도록 구성된 입력 디바이스와;
    코어 데이터베이스와, 상기 코어 데이터베이스는 그룹 데이터 아이템, 프로듀서에 의해 생성된, 프로덕션 컴퓨터로부터 수신되는 제2 그룹 데이터 아이템, 제1 운영 시스템을 갖는 제1 모바일 디바이스로부터 수신된 개별 데이터 아이템 및 상기 제1 운영 시스템과 다른 제2 운영 시스템을 갖는 제2 모바일 디바이스로부터 수신된 제2 개별 데이터 아이템을 포함하고; 그리고
    상기 입력 디바이스 및 상기 메모리와 통신하는 프로세서를 포함하여 구성되며,
    상기 프로세서는
    상기 메모리 내에 상기 소스 섹션을 저장하고,
    상기 소스 섹션 및 상기 그룹 데이터 아이템을 판독하고,
    상기 콘텐츠 및 상기 그룹 데이터 아이템을 포함하는 동적 섹션을 기록하고,
    상기 동적 섹션 및 상기 개별 데이터 아이템을 상기 콘텐츠를 포함하는 컴파일된 섹션으로 컴파일하고,
    상기 컴파일된 섹션을 클라이언트 큐로 송신하며,
    상기 콘텐츠 및 상기 제2 그룹 데이터 아이템을 포함하는 제2 동적 섹션을 기록하고;
    상기 제2 동적 섹션 및 상기 개별 데이터 아이템을 상기 제1 모바일 디바이스 상의 상기 제1 운영 시스템에 의해 인식가능한 대체 컴파일된 섹션(replacement compiled section)으로 컴파일하며;
    상기 제2 동적 섹션 및 상기 제2 개별 데이터 아이템을 상기 제2 모바일 디바이스 상의 상기 제2 운영 시스템에 의해 인식가능한 제2 컴파일된 섹션으로 컴파일하고;
    상기 동적 섹션 및 상기 제2 개별 데이터 아이템을 상기 제1 운영 시스템 및 상기 제2 운영 시스템에 의해 인식가능한 공유된 컴파일된 섹션으로 컴파일하고; 그리고
    상기 제2 동적 섹션을 상기 제1 운영 시스템 및 상기 제2 운영 시스템에 의해 인식가능한 그룹 컴파일된 섹션으로 컴파일하도록 구성된 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  4. 제3 항에 있어서,
    상기 컴파일된 섹션은 상기 제1 모바일 디바이스 상의 모바일 애플리케이션에 의해 실행가능한 콘텐츠 앱을 포함하며; 그리고
    상기 제2 컴파일된 섹션은 상기 제2 모바일 디바이스 상의 제2 모바일 애플리케이션에 의해 실행가능한 제2 콘텐츠 앱을 포함하는 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  5. 제3 항에 있어서,
    상기 컴파일된 섹션은 복수의 바이너리 패킷들로 구성되며, 상기 복수의 바이너리 패킷들을 상기 콘텐츠를 포함하는 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  6. 제3 항에 있어서,
    상기 입력 디바이스는,
    상기 시스템 상에의 제1 로그온; 어떤 클라이언트에 의해 이전에 액세스되지 않은 콘텐츠에 대한 제1 클라이언트로부터의 요청; 피드 매니저가 새 콘텐츠를 검색하는 것; 프로듀서가 새 콘텐츠를 생성하는 것; 스케줄링된 이벤트가 발생(transpire)되는 것; 및 프로듀서가 콘텐츠를 푸시하는 것으로 구성된 리스트로부터 선택된 이벤트를 개시하는 단계 1에 응답하여, 상기 소스 섹션을 수신하는 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  7. 제3 항에 있어서,
    상기 프로세서는,
    상기 메모리에 의한 상기 콘텐츠를 포함하는 상기 소스 섹션의 수신; 후속 클라이언트에 의한 로그온; 및 어떤 클라이언트에 의해 이전에 액세스된 콘텐츠에 대한 후속 클라이언트로부터의 요청으로 구성된 리스트로부터 선택된 이벤트를 개시하는 단계 2에 응답하여, 상기 소스 섹션을 판독하고 상기 동적 섹션을 기록하는 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  8. 제3 항에 있어서,
    상기 프로세서는,
    상기 소스 섹션을 상기 소스 섹션에 대응하는 오래된(older) 소스 섹션과 비교하고, 상기 소스 섹션이 상기 오래된 소스 섹션과 동일하지 않음에 응답하여, 상기 동적 섹션을 기록하고 그리고 상기 동적 섹션을 컴파일된 섹션으로 컴파일하고 상기 컴파일된 섹션을 상기 클라이언트 큐로 송신하고; 그리고
    상기 동적 섹션을 상기 동적 섹션에 대응하는 오래된 동적 섹션과 비교하고, 상기 동적 섹션이 상기 오래된 동적 섹션과 동일하지 않음에 응답하여, 상기 동적 섹션을 컴파일된 섹션으로 컴파일하고 상기 컴파일된 섹션을 상기 클라이언트 큐로 송신하도록 더 구성된 것을 특징으로 하는 하나 이상의 클라이언트들에 콘텐츠를 전달하기 위한 장치.
  9. 콘텐츠 애플리케이션을 배포(distributing)하는 시스템으로서,
    웹 인터페이스에 연결되어 있으며 프로듀서로 하여금 상기 웹 인터페이스를 통해 기능(functionality)을 포함하는 콘텐츠 애플리케이션을 생성하게 하도록 구성된 프로덕션 서버와;
    메모리, 하나 이상의 프로세서들 및 입력 디바이스를 포함하고 상기 프로덕션 서버와 통신하며 클라이언트 애플리케이션 및 상기 콘텐츠 애플리케이션을 수신하도록 구성된 게이트웨이 서버와, 여기서 상기 하나 이상의 프로세서들은
    상기 클라이언트 애플리케이션에 근거하여 모바일 애플리케이션 및 제2 모바일 애플리케이션을 어셈블(assemble)하고, 그리고
    상기 콘텐츠 애플리케이션을 컴파일된 콘텐츠 앱 및 제2 컴파일된 콘텐츠 앱으로 컴파일하도록 구성된 것이며;
    상기 컴파일된 콘텐츠 앱이 최종-사용자(end-user)에게 상기 기능을 제공하게 하도록, 상기 모바일 애플리케이션을 수신 및 인스톨하고 상기 컴파일된 콘텐츠 앱을 수신 및 실행하도록 구성된 모바일 디바이스와; 그리고
    제2 모바일 디바이스를 포함하여 구성되고,
    상기 제2 모바일 디바이스는 상기 모바일 디바이스와 다르며, 상기 제2 컴파일된 콘텐츠 앱이 제2 최종-사용자에게 상기 기능을 제공하게 하도록, 상기 제2 모바일 애플리케이션을 수신 및 인스톨하고 그리고 상기 제2 컴파일된 콘텐츠 앱을 수신 및 실행하도록 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 시스템.
  10. 제9 항에 있어서,
    상기 웹 인터페이스는 프로듀서로 하여금 상기 콘텐츠 애플리케이션에 대해 상기 기능을 변경시켜 수정된(modified) 기능을 포함하는 수정된 콘텐츠 애플리케이션으로 변경하도록 하며, 그럼으로써 하나 이상의 프로세서들로 하여금 실시간으로:
    상기 수정된 콘텐츠 애플리케이션을 수신하고 상기 수정된 콘텐츠 애플리케이션을 수정된 컴파일된 콘텐츠 앱(modified compiled content app)으로 컴파일하도록 하고; 그리고
    상기 수정된 컴파일된 콘텐츠 앱을 상기 모바일 디바이스에 송신하도록 하며, 그럼으로써 상기 모바일 디바이스로 하여금 실시간으로, 상기 수정된 컴파일된 콘텐츠 앱이 상기 최종-사용자에게 상기 수정된 기능을 제공하도록, 상기 수정된 컴파일된 콘텐츠 앱을 실행하도록 된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 시스템.
  11. 제9 항에 있어서,
    상기 하나 이상의 프로세서들은
    상기 콘텐츠 애플리케이션을 변환시키고, 상기 변환된 콘텐츠 애플리케이션을 변환된 컴파일된 콘텐츠 앱(transformed compiled content app)으로 동시에 컴파일하며; 그리고
    변환 및 컴파일과 동시에, 제3 모바일 디바이스에 상기 변환된 컴파일된 콘텐츠 앱을 송신하고, 그럼으로써 상기 제3 모바일 디바이스로 하여금 실시간으로, 상기 변환된 컴파일된 콘텐츠 앱이 제3 최종-사용자에게 상기 기능의 번역된 버전(translated version)을 제공하도록, 상기 변환된 컴파일된 콘텐츠 앱을 실행하도록 더 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 시스템.
  12. 콘텐츠 애플리케이션을 배포하기 위한 장치로서,
    메모리와;
    상기 메모리와 통신하며 클라이언트 애플리케이션 및 기능을 포함하는 콘텐츠 애플리케이션을 수신하도록 구성된 입력 디바이스와; 그리고
    상기 입력 디바이스 및 상기 메모리와 통신하는 하나 이상의 프로세서들을 포함하여 구성되고,
    상기 하나 이상의 프로세서들은
    상기 메모리에 상기 콘텐츠 애플리케이션을 저장하고,
    상기 클라이언트 애플리케이션에 근거하여 모바일 애플리케이션 및 제2 모바일 애플리케이션을 어셈블하며,
    상기 모바일 애플리케이션을 인스톨될 모바일 디바이스에 송신하고 상기 제2 모바일 애플리케이션을 인스톨될 제2 모바일 디바이스에 송신하며,
    상기 콘텐츠 애플리케이션을 상기 인스톨된 모바일 애플리케이션에 의해 실행될 수 있는 컴파일된 콘텐츠 앱으로 컴파일해서, 상기 컴파일된 콘텐츠 앱이 최종-사용자에게 상기 기능을 전달하도록 하고, 그리고
    상기 콘텐츠 애플리케이션을 상기 인스톨된 제2 모바일 애플리케이션에 의해 실행될 수 있는 제2 컴파일된 콘텐츠 앱으로 컴파일해서, 상기 제2 컴파일된 콘텐츠 앱이 제2 최종-사용자에게 상기 기능을 전달하게 하도록 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  13. 제12 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 컴파일하는 단계에 응답하여 상기 모바일 디바이스에 상기 컴파일된 콘텐츠 앱을 송신하고, 그리고 상기 제2 모바일 디바이스에 상기 제2 컴파일된 콘텐츠 앱을 송신하도록 더 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  14. 제12 항에 있어서,
    코어 데이터 베이스를 더 포함하고, 상기 코어 데이터 베이스는 그룹 데이터 아이템 및 개별 데이터 아이템을 포함하며, 여기서 상기 하나 이상의 프로세서들은
    상기 콘텐츠 애플리케이션 및 상기 그룹 데이터 아이템을 동적 섹션 내로 기록하고; 그리고
    상기 동적 섹션을 상기 컴파일된 콘텐츠 앱으로 컴파일하도록 더 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  15. 제14항에 있어서,
    상기 하나 이상의 프로세서들은
    상기 동적 섹션 및 상기 개별 데이터 아이템을 상기 인스톨된 제2 모바일 애플리케이션에 의해 실행될 수 있는 개별적인 컴파일된 콘텐츠 앱으로 컴파일해서, 상기 개별적인 컴파일된 콘텐츠 앱이 상기 제2 최종-사용자에게 개별화된 형태(form)의 기능을 전달할 수 있게 하도록 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  16. 제12 항에 있어서,
    상기 모바일 디바이스는 플랫폼(platform)을 포함하며, 상기 제2 모바일 디바이스는, 상기 플랫폼과 다르고, Java ME; iPhone; iOS; iPad; Android; Windows Mobile; Windows Phone; Blackberry OS; Symbian 및 bada로 구성된 리스트로부터 선택된 제2 플랫폼을 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  17. 제13 항에 있어서,
    상기 기능은 질문(question) 및 입력 프롬프트(nput prompt)를 포함하고, 상기 하나 이상의 프로세서들은
    상기 입력 디바이스에 의해, 상기 콘텐츠 애플리케이션을 수신함과 동시에 상기 콘텐츠 애플리케이션을 컴파일된 콘텐츠 앱으로 컴파일하고, 결과적으로 상기 컴파일된 콘텐츠 앱이 복수의 모바일 애플리케이션들에 의해 실행되게 해서, 각각의 모바일 애플리케이션이 실시간으로, 별개의 최종-사용자에게 상기 질문 및 상기 입력 프롬프트를 전달할 수 있게 하도록 더 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  18. 제12 항에 있어서,
    상기 기능은 요소(element)의 디스플레이 및 일 스크린으로부터 제2 스크린으로의 네비게이션(navigation)을 포함하고;
    상기 콘텐츠 애플리케이션은 상기 디스플레이에 대응하는 Java SE 클래스 및 상기 네비게이션에 대응하는 제2 Java SE 클래스를 포함하며;
    상기 컴파일된 콘텐츠 앱은 상기 디스플레이에 대응하는 Java ME 클래스 및 상기 네비게이션에 대응하는 제2 Java ME 클래스를 포함하고;
    상기 제2 컴파일된 콘텐츠 앱은 상기 디스플레이에 대응하여 실행가능한 Objective-C 클래스 및 상기 네비게이션에 대응하여 실행가능한 제2 Objective-C 클래스를 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  19. 제13 항에 있어서,
    상기 컴파일된 콘텐츠 앱 및 상기 제2 컴파일된 콘텐츠 앱 각각은 복수의 바이너리 패킷들로 구성되고, 복수의 바이너리 패킷들의 각각은 상기 기능을 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  20. 제14 항에 있어서,
    상기 하나 이상의 프로세서들은
    복수의 모바일 디바이스들로 하여금 다수의 사용자들 중 한 사용자로부터 입력을 동시에 각각 수신하게끔 하고;
    상기 복수의 모바일 디바이스들로부터 상기 입력들을 수신하며;
    종합적인 결과(aggregate result)를 생성하도록 상기 입력들을 종합하고;
    상기 코어 데이터베이스에 상기 종합적인 결과를 제2 그룹 데이터 아이템으로서 저장하며;
    상기 종합적인 결과를 포함하는 디스플레이가능한 객체(object)를 생성하고; 그리고
    각각의 모바일 디바이스로 하여금 상기 디스플레이가능한 객체를 디스플레이하게 하도록 더 구성된 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  21. 제13 항에 있어서,
    상기 기능은 바로 이전 기능(immediately preceding functionality)으로의 변경(alteration)을 포함하고, 상기 모바일 디바이스에 상기 컴파일된 콘텐츠 앱을 송신하는 것은 상기 모바일 애플리케이션으로 하여금 상기 바로 이전 기능을 상기 기능과 교체하게끔 하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하기 위한 장치.
  22. 콘텐츠 애플리케이션을 배포하는 방법으로서,
    입력 디바이스, 하나 이상의 프로세서들 및 메모리를 포함하는 컴퓨터에 의해, 클라이언트 애플리케이션 및 기능을 포함하는 콘텐츠 애플리케이션을 수신하는 단계와;
    상기 메모리에 상기 콘텐츠 애플리케이션을 저장하는 단계와;
    상기 하나 이상의 프로세서들에 의해, 그리고 상기 클라이언트 애플리케이션에 근거하여, 모바일 애플리케이션 및 제2 모바일 애플리케이션을 어셈블하는 단계와;
    상기 모바일 애플리케이션을 인스톨될 모바일 디바이스에 송신하는 단계 및 상기 제2 모바일 애플리케이션을 인스톨될 제2 모바일 디바이스에 송신하는 단계와;
    컴파일된 콘텐츠 앱이 최종-사용자에게 상기 기능을 전달할 수 있도록, 상기 콘텐츠 애플리케이션을 상기 인스톨된 모바일 애플리케이션에 의해 실행될 수 있는 상기 컴파일된 콘텐츠 앱으로 컴파일하는 단계와; 그리고
    제2 컴파일된 콘텐츠 앱이 제2 최종-사용자에게 상기 기능을 전달할 수 있게 하도록, 상기 콘텐츠 애플리케이션을 상기 인스톨된 제2 모바일 애플리케이션에 의해 실행될 수 있는 상기 제2 컴파일된 콘텐츠 앱으로 컴파일하는 단계를 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  23. 제22 항에 있어서,
    상기 컴파일하는 단계에 응답하여,
    상기 모바일 디바이스에 상기 컴파일된 콘텐츠 앱을 송신하는 단계; 및
    상기 제2 모바일 디바이스에 상기 제2 컴파일된 콘텐츠 앱을 송신하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  24. 제22 항에 있어서,
    코어 데이터베이스에 그룹 데이터 아이템 및 개별 데이터 아이템을 저장하는 단계와;
    상기 콘텐츠 애플리케이션 및 상기 그룹 데이터 아이템을 동적 섹션 내로 기록하는 단계와; 그리고
    상기 동적 섹션을 상기 컴파일된 콘텐츠 앱으로 컴파일하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  25. 제24 항에 있어서,
    개별적인 컴파일된 콘텐츠 앱이 상기 제2 최종-사용자에게 개별화된 형태의 기능을 전달할 수 있도록, 상기 동적 섹션 및 상기 개별 데이터 아이템을 상기 인스톨된 제2 모바일 애플리케이션에 의해 실행될 수 있는 상기 개별적인 컴파일된 콘텐츠 앱으로 컴파일하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  26. 제22 항에 있어서,
    상기 모바일 디바이스는 플랫폼을 포함하며, 상기 제2 모바일 디바이스는, 상기 플랫폼과는 다르고, Java ME; iPhone; iOS; iPad; Android; Windows Mobile; Windows Phone; Blackberry OS; Symbian 및 bada로 구성된 리스트로부터 선택된 제2 플랫폼을 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  27. 제23 항에 있어서,
    상기 기능은 질문 및 입력 프롬프트를 포함하고,
    상기 입력 디바이스에 의해 상기 콘텐츠 애플리케이션을 수신함과 동시에, 상기 콘텐츠 애플리케이션을 컴파일된 콘텐츠 앱으로 컴파일하는 단계 - 상기 컴파일하는 단계는 결과적으로, 상기 컴파일된 콘텐츠 앱이 복수의 모바일 애플리케이션들에 의해 실행되게 하여서, 각각의 모바일 애플리케이션은 실시간으로, 다수의 최종-사용자들 중 한 사용자에게 상기 질문 및 상기 입력 프롬프트를 전달할 수 있게 된다 - 를 더 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  28. 제22 항에 있어서,
    상기 기능은 요소의 디스플레이 및 일 스크린으로부터 제2 스크린으로의 네비게이션을 포함하고;
    상기 콘텐츠 애플리케이션은 상기 디스플레이에 대응하는 Java SE 클래스 및 상기 네비게이션에 대응하는 제2 Java SE 클래스를 포함하며;
    상기 컴파일된 콘텐츠 앱은 상기 디스플레이에 대응하는 Java ME 클래스 및 상기 네비게이션에 대응하는 제2 Java ME 클래스를 포함하고;
    상기 제2 컴파일된 콘텐츠 앱은 상기 디스플레이에 대응하여 실행가능한 Objective-C 클래스 및 상기 네비게이션에 대응하여 실행가능한 제2 Objective-C 클래스를 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  29. 제23 항에 있어서,
    상기 컴파일된 콘텐츠 앱 및 상기 제2 컴파일된 콘텐츠 앱 각각은 복수의 바이너리 패킷들로 구성되고, 상기 복수의 바이너리 패킷들의 각각은 상기 기능을 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  30. 제24 항에 있어서,
    복수의 모바일 디바이스들로 하여금 복수의 사용자들 중 한 사용자로부터 입력을 동시에 각각 수신하게끔 하는 단계와;
    상기 모바일 디바이스들로부터 상기 입력들을 수신하는 단계와;
    종합적인 결과를 생성하도록 상기 입력들을 종합하는 단계와;
    상기 코어 데이터베이스에 상기 종합적인 결과를 제2 그룹 데이터 아이템으로서 저장하는 단계와;
    상기 종합적인 결과를 포함하는 디스플레이가능한 객체를 생성하는 단계와; 그리고
    각각의 모바일 디바이스로 하여금 상기 디스플레이가능한 객체를 디스플레이하게 하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
  31. 제23 항에 있어서,
    상기 기능은 바로 이전 기능으로의 변경을 포함하고, 상기 모바일 디바이스에 상기 컴파일된 콘텐츠 앱을 송신하는 것은 상기 모바일 애플리케이션으로 하여금 상기 바로 이전 기능을 상기 기능과 교체하게끔 하는 것을 특징으로 하는 콘텐츠 애플리케이션을 배포하는 방법.
KR1020137011906A 2010-10-08 2011-10-07 다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달 KR101412765B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39127210P 2010-10-08 2010-10-08
US61/391,272 2010-10-08
PCT/US2011/055433 WO2012048262A2 (en) 2010-10-08 2011-10-07 Multi-phased and partitioned content preparation and delivery

Publications (2)

Publication Number Publication Date
KR20140011304A KR20140011304A (ko) 2014-01-28
KR101412765B1 true KR101412765B1 (ko) 2014-07-01

Family

ID=45925965

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137011906A KR101412765B1 (ko) 2010-10-08 2011-10-07 다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달

Country Status (5)

Country Link
US (6) US8312173B2 (ko)
EP (3) EP2625816B1 (ko)
KR (1) KR101412765B1 (ko)
SG (1) SG189304A1 (ko)
WO (3) WO2012048267A2 (ko)

Families Citing this family (212)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
CN102027721B (zh) 2008-04-02 2015-05-13 特维里奥公司 处理电话会话的系统和方法
US8964726B2 (en) 2008-10-01 2015-02-24 Twilio, Inc. Telephony web event system and method
US8347386B2 (en) 2008-10-21 2013-01-01 Lookout, Inc. System and method for server-coupled malware prevention
US8087067B2 (en) 2008-10-21 2011-12-27 Lookout, Inc. Secure mobile platform system
US9367680B2 (en) 2008-10-21 2016-06-14 Lookout, Inc. System and method for mobile communication device application advisement
US8051480B2 (en) 2008-10-21 2011-11-01 Lookout, Inc. System and method for monitoring and analyzing multiple interfaces and multiple protocols
US9043919B2 (en) 2008-10-21 2015-05-26 Lookout, Inc. Crawling multiple markets and correlating
US8533844B2 (en) 2008-10-21 2013-09-10 Lookout, Inc. System and method for security data collection and analysis
US9781148B2 (en) 2008-10-21 2017-10-03 Lookout, Inc. Methods and systems for sharing risk responses between collections of mobile communications devices
US8984628B2 (en) 2008-10-21 2015-03-17 Lookout, Inc. System and method for adverse mobile application identification
US9235704B2 (en) 2008-10-21 2016-01-12 Lookout, Inc. System and method for a scanning API
US8060936B2 (en) 2008-10-21 2011-11-15 Lookout, Inc. Security status and information display system
US8108933B2 (en) 2008-10-21 2012-01-31 Lookout, Inc. System and method for attack and malware prevention
US8467768B2 (en) 2009-02-17 2013-06-18 Lookout, Inc. System and method for remotely securing or recovering a mobile device
US8538815B2 (en) 2009-02-17 2013-09-17 Lookout, Inc. System and method for mobile device replacement
US9042876B2 (en) 2009-02-17 2015-05-26 Lookout, Inc. System and method for uploading location information based on device movement
US9955352B2 (en) 2009-02-17 2018-04-24 Lookout, Inc. Methods and systems for addressing mobile communications devices that are lost or stolen but not yet reported as such
US8855601B2 (en) 2009-02-17 2014-10-07 Lookout, Inc. System and method for remotely-initiated audio communication
US8315369B2 (en) 2009-03-02 2012-11-20 Twilio, Inc. Method and system for a multitenancy telephone network
US8868899B2 (en) * 2009-07-20 2014-10-21 Motorola Mobility Llc System and method for switching between environments in a multi-environment operating system
US9372711B2 (en) * 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9348633B2 (en) * 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) * 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US9336023B2 (en) * 2009-12-18 2016-05-10 Sybase, Inc. Visual generation of mobile applications based on data models
US9459926B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US9459925B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US8983536B2 (en) 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
US20120173986A1 (en) * 2011-01-04 2012-07-05 Motorola-Mobility, Inc. Background synchronization within a multi-environment operating system
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
WO2012119215A1 (en) 2011-03-04 2012-09-13 Eski Inc. Devices and methods for providing a distributed manifestation in an environment
US8700804B1 (en) * 2011-03-16 2014-04-15 EP Visual Design, Inc. Methods and apparatus for managing mobile content
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
WO2012162397A1 (en) 2011-05-23 2012-11-29 Twilio, Inc. System and method for connecting a communication to a client
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
EP2715973A4 (en) * 2011-05-25 2015-03-18 Hewlett Packard Development Co IMPLEMENTING NETWORK DEVICE COMPONENTS IN NETWORK DEVICES
US9159037B2 (en) 2011-06-14 2015-10-13 Genesys Telecommunications Laboratories, Inc. Context aware interaction
US8738765B2 (en) * 2011-06-14 2014-05-27 Lookout, Inc. Mobile device DNS optimization
CN102262552B (zh) * 2011-07-06 2015-08-19 惠州Tcl移动通信有限公司 一种应用程序跨设备同步方法及系统
US8917358B2 (en) * 2011-07-27 2014-12-23 Sony Corporation Reception apparatus, terminal apparatus, control method, program, and communication system
US9146728B2 (en) * 2011-08-03 2015-09-29 Cinemotion, Llc Mobile application creation platform
US20130035989A1 (en) * 2011-08-05 2013-02-07 Disney Enterprises, Inc. Conducting market research using social games
US8788881B2 (en) 2011-08-17 2014-07-22 Lookout, Inc. System and method for mobile device push communications
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
US20140289530A1 (en) * 2011-10-24 2014-09-25 Netapp, Inc. Systems and methods for content delivery
US9208253B2 (en) * 2011-11-09 2015-12-08 Cellco Partnership Efficient transfer of web content to different user platforms
US9240073B2 (en) * 2011-11-15 2016-01-19 Pixar File format for representing a scene
US9286040B2 (en) * 2012-01-18 2016-03-15 Mobilesmith, Inc. Software builder
US20130205277A1 (en) * 2012-02-07 2013-08-08 Telerik, AD Environment and method for cross-platform development of software applications
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US20130219006A1 (en) * 2012-02-21 2013-08-22 Sony Corporation Multiple media devices through a gateway server or services to access cloud computing service storage
WO2013142849A1 (en) 2012-03-23 2013-09-26 Clu Acquisition Llc Implementing policies for an enterprise network using policy instructions that are executed through a local policy framework
US20130268479A1 (en) * 2012-04-06 2013-10-10 Myspace Llc System and method for presenting and managing social media
US9417753B2 (en) 2012-05-02 2016-08-16 Google Technology Holdings LLC Method and apparatus for providing contextual information between operating system environments
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US8972968B1 (en) * 2012-05-31 2015-03-03 Amazon Technologies, Inc. Alternate service for applications
US9407443B2 (en) 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US9589129B2 (en) 2012-06-05 2017-03-07 Lookout, Inc. Determining source of side-loaded software
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
GB201211712D0 (en) * 2012-07-02 2012-08-15 Browne Wilkinson Oliver Game apparatus
KR102122002B1 (ko) 2012-07-19 2020-06-12 글랜스 네트웍스, 인크 다른 형태의 정보 공유를 통한 코브라우징의 통합
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US9584835B2 (en) 2012-09-06 2017-02-28 Decision-Plus M.C. Inc. System and method for broadcasting interactive content
US9348490B2 (en) 2012-09-14 2016-05-24 Ca, Inc. User interface with configuration, registration, and runtime selection of views
CN103677612A (zh) * 2012-09-22 2014-03-26 深圳清华大学研究院 电子设备控制装置及电子设备控制方法
US9389884B2 (en) * 2012-10-11 2016-07-12 Google Technology Holdings LLC Method and apparatus for providing adaptive wallpaper display for a device having multiple operating system environments
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US8655307B1 (en) 2012-10-26 2014-02-18 Lookout, Inc. System and method for developing, updating, and using user device behavioral context models to modify user, device, and application state, settings and behavior for enhanced user security
GB2507596B (en) * 2012-10-30 2014-09-17 Barclays Bank Plc Secure computing device and method
US20140171168A1 (en) * 2012-12-13 2014-06-19 Louis Richard Keilin System and method for distributed solitaire gaming
US9208215B2 (en) 2012-12-27 2015-12-08 Lookout, Inc. User classification based on data gathered from a computing device
US9374369B2 (en) 2012-12-28 2016-06-21 Lookout, Inc. Multi-factor authentication and comprehensive login system for client-server networks
US8855599B2 (en) 2012-12-31 2014-10-07 Lookout, Inc. Method and apparatus for auxiliary communications with mobile communications device
CN103929443A (zh) * 2013-01-10 2014-07-16 深圳市微讯移通信息技术有限公司 一种内置型的游戏服务器系统及该系统的应用方法
US9424409B2 (en) 2013-01-10 2016-08-23 Lookout, Inc. Method and system for protecting privacy and enhancing security on an electronic device
KR102060496B1 (ko) 2013-02-12 2019-12-30 삼성전자주식회사 시간 동기화를 위한 단말 장치 및 방법
CN104038830A (zh) * 2013-03-07 2014-09-10 中兴通讯股份有限公司 一种应用处理方法和装置
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9852416B2 (en) 2013-03-14 2017-12-26 Lookout, Inc. System and method for authorizing a payment transaction
US10699273B2 (en) 2013-03-14 2020-06-30 Lookout, Inc. System and method for authorizing payment transaction based on device locations
US9377985B2 (en) * 2013-03-15 2016-06-28 Xerox Corporation Method and apparatus for utilizing personal computing resources for mobile print conversion and routing
US10467327B1 (en) * 2013-03-15 2019-11-05 Matan Arazi Real-time event transcription system and method
US10268660B1 (en) * 2013-03-15 2019-04-23 Matan Arazi Real-time event transcription system and method
US9286055B1 (en) * 2013-04-03 2016-03-15 Amdocs Software Systems Limited System, method, and computer program for aggregating fragments of data objects from a plurality of devices
US20140316841A1 (en) * 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
US9307412B2 (en) 2013-04-24 2016-04-05 Lookout, Inc. Method and system for evaluating security for an interactive service operation by a mobile device
US9225799B1 (en) * 2013-05-21 2015-12-29 Trend Micro Incorporated Client-side rendering for virtual mobile infrastructure
US9240966B2 (en) 2013-06-19 2016-01-19 Twilio, Inc. System and method for transmitting and receiving media messages
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9483328B2 (en) * 2013-07-19 2016-11-01 Twilio, Inc. System and method for delivering application content
US9335983B2 (en) * 2013-07-28 2016-05-10 Oded Haim Breiner Method and system for displaying a non-installed android application and for requesting an action from a non-installed android application
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9674225B2 (en) 2013-09-20 2017-06-06 Open Text Sa Ulc System and method for updating downloaded applications using managed container
US10824756B2 (en) 2013-09-20 2020-11-03 Open Text Sa Ulc Hosted application gateway architecture with multi-level security policy and rule promulgations
EP2851833B1 (en) 2013-09-20 2017-07-12 Open Text S.A. Application Gateway Architecture with Multi-Level Security Policy and Rule Promulgations
US9507609B2 (en) 2013-09-29 2016-11-29 Taplytics Inc. System and method for developing an application
US9642008B2 (en) 2013-10-25 2017-05-02 Lookout, Inc. System and method for creating and assigning a policy for a mobile communications device based on personal data
US9495692B2 (en) * 2013-11-12 2016-11-15 Tung Inc. Conversion and display of a user input
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9262774B2 (en) * 2013-11-12 2016-02-16 Want Media Group Inc. Method and systems for providing a digital display of company logos and brands
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US20220066623A1 (en) * 2013-11-12 2022-03-03 Tung Inc. Conversion and Display of a User Input
US10528219B2 (en) * 2015-08-10 2020-01-07 Tung Inc. Conversion and display of a user input
US10877629B2 (en) 2016-10-13 2020-12-29 Tung Inc. Conversion and display of a user input
US20150163326A1 (en) * 2013-12-06 2015-06-11 Dropbox, Inc. Approaches for remotely unzipping content
US10122747B2 (en) 2013-12-06 2018-11-06 Lookout, Inc. Response generation after distributed monitoring and evaluation of multiple devices
US9753796B2 (en) 2013-12-06 2017-09-05 Lookout, Inc. Distributed monitoring, evaluation, and response for multiple devices
US10771357B2 (en) 2013-12-23 2020-09-08 Oath Inc. Method and system for delivering web page content using edge server
US10304110B2 (en) * 2013-12-26 2019-05-28 Ebay Inc. Ticket listing triggered by URL links
US10789554B2 (en) 2014-01-08 2020-09-29 Stubhub, Inc. Validity determination of an event ticket and automatic population of admission information
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US20150314196A1 (en) * 2014-05-01 2015-11-05 MPH, Inc. Deployment of an electronic game using device profiles
WO2015168479A1 (en) * 2014-05-01 2015-11-05 MPH, Inc. Deployment of an electronic game using device profiles
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
US20160026366A1 (en) * 2014-07-22 2016-01-28 Runfeng LUAN Method and system for customizing mobile terminal application
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US10198522B1 (en) 2015-04-12 2019-02-05 Joingo, Llc Index of native application content indexable by a search engine
EP3289510B1 (en) 2015-05-01 2020-06-17 Lookout Inc. Determining source of side-loaded software
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US10380227B2 (en) * 2015-06-07 2019-08-13 Apple Inc. Generating layout for content presentation structures
US9760254B1 (en) * 2015-06-17 2017-09-12 Amazon Technologies, Inc. Systems and methods for social book reading
KR20170010574A (ko) 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
WO2017019108A1 (en) 2015-07-30 2017-02-02 Hewlett Packard Enterprise Development Lp Firmware update of an interconnect device
US11593075B2 (en) 2015-11-03 2023-02-28 Open Text Sa Ulc Streamlined fast and efficient application building and customization systems and methods
US10187464B2 (en) * 2015-12-27 2019-01-22 Dropbox, Inc. Systems and methods of re-associating content items
CN105700936A (zh) * 2016-01-14 2016-06-22 福州靠谱网络有限公司 一种安卓模拟器应用程序运行方法和装置
US20170222944A1 (en) * 2016-01-29 2017-08-03 Microsoft Technology Licensing, Llc Computing resource deployment in non-mutually configurable environments
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US11388037B2 (en) 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
CN105938434A (zh) * 2016-03-24 2016-09-14 杭州迪普科技有限公司 一种升级操作系统的方法和装置
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10440053B2 (en) 2016-05-31 2019-10-08 Lookout, Inc. Methods and systems for detecting and preventing network connection compromise
WO2018004596A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Technologies for serializable binary data distribution
JP2019536494A (ja) 2016-09-07 2019-12-19 エスキー インコーポレイテッドESKI Inc. 分散発現の投影システム及び関連する方法
EP3612931B1 (en) 2017-04-17 2024-06-05 Deepsig Inc. Placement and scheduling of radio signal processing dataflow operations
US10218697B2 (en) 2017-06-09 2019-02-26 Lookout, Inc. Use of device risk evaluation to manage access to services
US10735449B2 (en) 2017-07-11 2020-08-04 Viaforensics, Llc Methods and apparatuses for improved mobile app security testing via bridged native and web user interface interaction
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10579276B2 (en) 2017-09-13 2020-03-03 Robin Systems, Inc. Storage scheme for a distributed storage system
US10534549B2 (en) 2017-09-19 2020-01-14 Robin Systems, Inc. Maintaining consistency among copies of a logical storage volume in a distributed storage system
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
CN107733938A (zh) * 2017-12-08 2018-02-23 北京酷我科技有限公司 一种Android上提升网络下载速度的优化策略
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US10628235B2 (en) 2018-01-11 2020-04-21 Robin Systems, Inc. Accessing log files of a distributed computing system using a simulated file system
US10642697B2 (en) 2018-01-11 2020-05-05 Robin Systems, Inc. Implementing containers for a stateful application in a distributed computing system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US10642694B2 (en) 2018-01-12 2020-05-05 Robin Systems, Inc. Monitoring containers in a distributed computing system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10579364B2 (en) * 2018-01-12 2020-03-03 Robin Systems, Inc. Upgrading bundled applications in a distributed computing system
US10402178B2 (en) * 2018-01-26 2019-09-03 Accenture Global Solutions Limited Cross platform content management and distribution system
US10194016B1 (en) * 2018-01-26 2019-01-29 Zipwhip, Inc. Activation of SMS signaling from dynamically activated control interface
US10834207B2 (en) * 2018-02-27 2020-11-10 Excelfore Corporation System and method for updating software in an electronic device
US11819758B2 (en) * 2018-04-06 2023-11-21 Novi Digital Entertainment Private Limited Synchronization of online gaming environment with video streaming of a live event
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US10599622B2 (en) 2018-07-31 2020-03-24 Robin Systems, Inc. Implementing storage volumes over multiple tiers
CN109491654B (zh) * 2018-09-18 2021-11-16 西安葡萄城信息技术有限公司 一种基于HTML5 Canvas的表格绘制方法和系统
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US10620871B1 (en) 2018-11-15 2020-04-14 Robin Systems, Inc. Storage scheme for a distributed storage system
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US11228810B1 (en) 2019-04-22 2022-01-18 Matan Arazi System, method, and program product for interactively prompting user decisions
US11551803B1 (en) 2019-04-22 2023-01-10 Aimcast Ip, Llc System, method, and program product for generating and providing simulated user absorption information
US11017688B1 (en) 2019-04-22 2021-05-25 Matan Arazi System, method, and program product for interactively prompting user decisions
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
US10877684B2 (en) 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11520677B1 (en) 2019-09-25 2022-12-06 Aimcast Ip, Llc Real-time Iot device reliability and maintenance system and method
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US20210133282A1 (en) * 2019-11-06 2021-05-06 PredictSpring, Inc. Methods and apparatus for generating a platform-agnostic mobile application configuration data structure with a dynamic quiz
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
CN111142881B (zh) * 2019-12-27 2023-10-27 浪潮云信息技术股份公司 一种基于kubernetes的编排charts自动化部署的系统及方法
US11683329B2 (en) 2020-02-25 2023-06-20 Palo Alto Networks, Inc. Detecting malicious activity on an endpoint based on real-time system events
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
KR20220001851A (ko) 2020-06-30 2022-01-06 엘지전자 주식회사 조리기기 및 그 제어방법
KR20220028879A (ko) * 2020-08-31 2022-03-08 현대자동차주식회사 차량의 ecu 업데이트 관리 장치 및 그 방법
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
CN112905170B (zh) * 2021-03-09 2024-04-19 百果园技术(新加坡)有限公司 渠道包的生成方法、装置、设备及存储介质
US11856047B2 (en) 2022-03-11 2023-12-26 Twilio Inc. Messaging via multiple communication channels using preconfigured content resources of a software as a service platform

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119375A1 (en) 2007-11-05 2009-05-07 Research In Motion Limited Method and system for optimizing delivery of mobile content using differential metadata updates
WO2009079794A1 (en) 2007-12-20 2009-07-02 Chalk Media Service Corp. A method and system for the delivery of large content assets to a mobile device over a mobile network
US20090282127A1 (en) 2008-05-07 2009-11-12 Chalk Media Service Corp. Method for enabling bandwidth management for mobile content delivery

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2206614A1 (en) 1997-05-30 1998-11-30 Richard A. Kupnicki Method and apparatus for absolute time descriptor universal reference signals for the synchronization of video and audio equipment in analog and digital areas
US7523191B1 (en) 2000-06-02 2009-04-21 Yahoo! Inc. System and method for monitoring user interaction with web pages
US20080215672A1 (en) * 1999-09-10 2008-09-04 Sybase 365, Inc. System, Method, and Computer Program Product for a Scalable, Configurable, Client/Server, Cross-Platform Browser for Mobile Devices
US6684383B1 (en) * 1999-09-29 2004-01-27 Kabushiki Kaisha Toshiba Method for constructing enterprise system
US7137066B2 (en) * 2000-04-06 2006-11-14 Microsoft Corporation Binary cache file format for themeing the visual appearance of a computer system
US20020026474A1 (en) * 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
US6754470B2 (en) 2000-09-01 2004-06-22 Telephia, Inc. System and method for measuring wireless device and network usage and performance metrics
US6745011B1 (en) 2000-09-01 2004-06-01 Telephia, Inc. System and method for measuring wireless device and network usage and performance metrics
US7877518B2 (en) * 2000-11-30 2011-01-25 Access Systems Americas, Inc. Method and apparatus for updating applications on a mobile device via device synchronization
US7038619B2 (en) 2001-12-31 2006-05-02 Rdp Associates, Incorporated Satellite positioning system enabled media measurement system and method
WO2004077298A1 (en) 2003-02-28 2004-09-10 Canon Kabushiki Kaisha Information processing method and apparatus
US7873353B2 (en) 2003-09-30 2011-01-18 Ianywhere Solutions, Inc. Method and system for accessing applications and data, and for tracking of key indicators on mobile handheld devices
DE602004020492D1 (de) * 2003-10-02 2009-05-20 Research In Motion Ltd Selektives laden und konfigurieren einer anwendung auf einer drahtlosen einrichtung unter verwendung von relationalen informationen
JP2007510979A (ja) 2003-11-06 2007-04-26 インテュウェーブ リミテッド 無線モバイル機器のための迅速なソフトウエアアプリケーション開発の方法
US7420464B2 (en) 2004-03-15 2008-09-02 Arbitron, Inc. Methods and systems for gathering market research data inside and outside commercial establishments
US20050239551A1 (en) 2004-04-26 2005-10-27 Scott Griswold System and method for providing interactive games
US20050273804A1 (en) * 2004-05-12 2005-12-08 Showtime Networks Inc. Animated interactive polling system, method, and computer program product
US20070294336A1 (en) * 2004-07-02 2007-12-20 Greg Pounds Proxy-based communications architecture
JP2006048486A (ja) * 2004-08-06 2006-02-16 Dainippon Printing Co Ltd 時刻認証システムおよび方法
US20060080683A1 (en) * 2004-10-12 2006-04-13 Majid Anwar Mechanism to circumvent restrictions of pre-written code components
US7493373B2 (en) * 2004-12-27 2009-02-17 Nokia Corporation Providing service distribution between distributed applications
US7895566B2 (en) * 2005-03-10 2011-02-22 Research In Motion Limited System and method for building a deployable component based application
US7817983B2 (en) 2005-03-14 2010-10-19 Qualcomm Incorporated Method and apparatus for monitoring usage patterns of a wireless device
US7669201B2 (en) * 2005-05-02 2010-02-23 Intermec Ip Corp. System and method for common file installation
US7907966B1 (en) * 2005-07-19 2011-03-15 Aol Inc. System and method for cross-platform applications on a wireless phone
US20070264985A1 (en) * 2006-04-17 2007-11-15 Flextronics Software Systems Method and system for rapid creation of applications in communication devices
US7756829B2 (en) 2006-04-18 2010-07-13 Sandeep Bhanote Method and apparatus for mobile data collection and management
WO2007137403A1 (en) * 2006-05-26 2007-12-06 Tira Wireless Inc. System and method of generating applications for mobile devices
US20070288662A1 (en) 2006-06-12 2007-12-13 Telepaq Technology Inc. Distributed push-pull information service system
US20090150872A1 (en) * 2006-07-04 2009-06-11 George Russell Dynamic code update
US20080016176A1 (en) 2006-07-13 2008-01-17 Ofir Leitner System for development of games for mobile devices and distribution thereof
US8607223B2 (en) * 2006-07-28 2013-12-10 International Business Machines Corporation Creating multiplatform customized install packages for software installation
US20080059300A1 (en) 2006-09-01 2008-03-06 Admob, Inc. Targeting an ad to a mobile device
US20080127179A1 (en) * 2006-09-25 2008-05-29 Barrie Jon Moss System and apparatus for deployment of application and content to different platforms
US8260252B2 (en) 2006-10-02 2012-09-04 The Nielsen Company (Us), Llc Method and apparatus for collecting information about portable device usage
US8014726B1 (en) 2006-10-02 2011-09-06 The Nielsen Company (U.S.), Llc Method and system for collecting wireless information transparently and non-intrusively
US8095124B2 (en) 2006-10-20 2012-01-10 Verizon Patent And Licensing Inc. Systems and methods for managing and monitoring mobile data, content, access, and usage
CN101569139B (zh) 2006-12-21 2012-09-05 Nxp股份有限公司 针对wlan和蓝牙结合的服务质量
WO2008091101A1 (en) * 2007-01-22 2008-07-31 E3Net Co., Ltd. Program generating apparatus in cross platform
US9451009B2 (en) * 2007-02-19 2016-09-20 Appcentral, Inc. Methods and system to create applications and distribute applications to a remote device
US8595186B1 (en) * 2007-06-06 2013-11-26 Plusmo LLC System and method for building and delivering mobile widgets
CN101802860A (zh) 2007-07-09 2010-08-11 维蒂公开股份有限公司 移动设备销售和广告平台、方法及系统
US8060074B2 (en) * 2007-07-30 2011-11-15 Mobile Iron, Inc. Virtual instance architecture for mobile device management systems
US8478245B2 (en) * 2007-08-01 2013-07-02 Phunware, Inc. Method and system for rendering content on a wireless device
US7936790B2 (en) * 2007-08-30 2011-05-03 Silicon Image, Inc. Synchronizing related data streams in interconnection networks
US20100100445A1 (en) 2007-10-05 2010-04-22 Admob, Inc. System and method for targeting the delivery of inventoried content over mobile networks to uniquely identified users
US8811968B2 (en) * 2007-11-21 2014-08-19 Mfoundry, Inc. Systems and methods for executing an application on a mobile device
US8793305B2 (en) 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US20090167553A1 (en) 2007-12-30 2009-07-02 Jin Hong Open Mobile Online Reservation and Ordering Systems
US20090203352A1 (en) 2008-02-13 2009-08-13 Xelex Technologies Inc. Mobile phone/device usage tracking system and method
US20090228862A1 (en) * 2008-03-04 2009-09-10 Anders Bertelrud Modularized integrated software development environments
US20090254851A1 (en) 2008-04-08 2009-10-08 Techneos Systems Inc. Method and system for conducting a survey by using a wireless device
US20090300143A1 (en) 2008-05-28 2009-12-03 Musa Segal B H Method and apparatus for interacting with media programming in real-time using a mobile telephone device
US20090313641A1 (en) * 2008-06-12 2009-12-17 Condel International Technologies Inc. Application management methods and systems
US8745573B2 (en) * 2008-06-16 2014-06-03 Beek Fund B.V. L.L.C. Platform-independent application development framework
WO2010001324A2 (en) * 2008-06-30 2010-01-07 Mominis Ltd Method of generating and distributing a computer application
US8776144B2 (en) * 2008-10-16 2014-07-08 Industrial Technology Research Institute Mobile TV system and method for synchronizing the rendering of streaming services thereof
US8099472B2 (en) * 2008-10-21 2012-01-17 Lookout, Inc. System and method for a mobile cross-platform software system
EP2187619A1 (en) 2008-11-05 2010-05-19 Harris Corporation Improved method, system and apparatus for synchronizing signals
US20100121744A1 (en) 2008-11-07 2010-05-13 At&T Intellectual Property I, L.P. Usage data monitoring and communication between multiple devices
US8812699B2 (en) * 2008-12-04 2014-08-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for data synchronization in a multi-path environment
US20100281475A1 (en) * 2009-05-04 2010-11-04 Mobile On Services, Inc. System and method for mobile smartphone application development and delivery
US8718805B2 (en) * 2009-05-27 2014-05-06 Spot411 Technologies, Inc. Audio-based synchronization to media
US8489774B2 (en) * 2009-05-27 2013-07-16 Spot411 Technologies, Inc. Synchronized delivery of interactive content
CA2698066A1 (en) * 2009-07-31 2011-01-31 Nitobi Software Inc. System and method for remotely compiling multi-platform native applications for mobile devices
US20110072371A1 (en) * 2009-09-18 2011-03-24 Microsoft Corporation Application programming interface for user interface creation
US8719776B2 (en) * 2009-12-30 2014-05-06 Foneclay, Inc. System for creation and distribution of software applications usable on multiple mobile device platforms
US20110202384A1 (en) * 2010-02-17 2011-08-18 Rabstejnek Wayne S Enterprise Rendering Platform
US9038038B1 (en) * 2010-06-01 2015-05-19 Google Inc. Just in time cloud compilation
US20120173986A1 (en) * 2011-01-04 2012-07-05 Motorola-Mobility, Inc. Background synchronization within a multi-environment operating system
US9299037B2 (en) * 2011-04-25 2016-03-29 Heartland Payment Systems, Inc. Provision of alert messages to customers of an establishment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119375A1 (en) 2007-11-05 2009-05-07 Research In Motion Limited Method and system for optimizing delivery of mobile content using differential metadata updates
WO2009079794A1 (en) 2007-12-20 2009-07-02 Chalk Media Service Corp. A method and system for the delivery of large content assets to a mobile device over a mobile network
US20090282127A1 (en) 2008-05-07 2009-11-12 Chalk Media Service Corp. Method for enabling bandwidth management for mobile content delivery

Also Published As

Publication number Publication date
US8346860B2 (en) 2013-01-01
EP2625816A4 (en) 2014-02-19
EP2625623A2 (en) 2013-08-14
US9563414B2 (en) 2017-02-07
US8688861B2 (en) 2014-04-01
WO2012048267A2 (en) 2012-04-12
EP2625816B1 (en) 2017-11-29
WO2012048257A3 (en) 2012-05-31
US20130139148A1 (en) 2013-05-30
US20120089718A1 (en) 2012-04-12
EP2625816A2 (en) 2013-08-14
EP2625624A2 (en) 2013-08-14
WO2012048262A2 (en) 2012-04-12
US20120089669A1 (en) 2012-04-12
US8312173B2 (en) 2012-11-13
US20130110976A1 (en) 2013-05-02
US20130031273A1 (en) 2013-01-31
US8392498B2 (en) 2013-03-05
SG189304A1 (en) 2013-05-31
KR20140011304A (ko) 2014-01-28
WO2012048267A3 (en) 2012-07-19
EP2625623A4 (en) 2014-08-20
WO2012048257A2 (en) 2012-04-12
EP2625623B1 (en) 2018-07-18
WO2012048262A3 (en) 2012-07-26
US20120089668A1 (en) 2012-04-12
US8984054B2 (en) 2015-03-17
EP2625624B1 (en) 2017-11-29
EP2625624A4 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
KR101412765B1 (ko) 다중-단계화 및 파티셔닝된 콘텐츠 준비 및 전달
US11014010B2 (en) State management of dynamic properties
CN111901674B (zh) 一种视频播放控制方法及装置
US8595186B1 (en) System and method for building and delivering mobile widgets
US20090240698A1 (en) Computing environment platform
CN108512814B (zh) 媒体数据处理方法、装置和系统
CN103268319A (zh) 一种基于网页的云浏览器
US9053444B2 (en) Deploying applications in a smart thin client server
JP2014505299A (ja) マイクロウェブログのメッセージを処理するための方法および装置
CN111261133A (zh) 演唱处理方法、装置、电子设备及存储介质
CN113010328A (zh) 信息分享方法、装置、终端设备及存储介质
CN110582024A (zh) 一种播放视频的方法和装置
CN110875955B (zh) 自组织呈现网络中的设备管理
US20170279749A1 (en) Modular Communications
US11606592B2 (en) Playlist events for combining multiple media timelines and content-insertion in dash streaming
US20170149578A1 (en) Networking cooperation method and machine using such method
KR101301133B1 (ko) 멀티미디어 콘텐츠를 이용한 소셜 네트워크 구축 장치 및 방법
Heckman Designing platform independent mobile apps and services
CN115334089A (zh) 数据同步方法、计算设备及介质
Tavares MATT-Media Asset Tracking Tool
JP2007299196A (ja) 番組配信システム

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee