KR101238574B1 - 수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체 - Google Patents

수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR101238574B1
KR101238574B1 KR1020077024567A KR20077024567A KR101238574B1 KR 101238574 B1 KR101238574 B1 KR 101238574B1 KR 1020077024567 A KR1020077024567 A KR 1020077024567A KR 20077024567 A KR20077024567 A KR 20077024567A KR 101238574 B1 KR101238574 B1 KR 101238574B1
Authority
KR
South Korea
Prior art keywords
subsection
clients
client
subsections
original document
Prior art date
Application number
KR1020077024567A
Other languages
English (en)
Other versions
KR20080014747A (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 KR20080014747A publication Critical patent/KR20080014747A/ko
Application granted granted Critical
Publication of KR101238574B1 publication Critical patent/KR101238574B1/ko

Links

Images

Classifications

    • 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
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1794Details of file format conversion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Abstract

다양한 장치를 이용하여 비교적 큰 수정가능한 문서를 다수의 클라이언트와 동기화 및 공유하는 방법, 시스템 및 컴퓨터 판독가능 매체가 제공된다. 이 방법은 각자의 클라이언트 장치에서 사용하기 위한 선호 포맷에 관하여 하나 이상의 클라이언트로부터 명령어를 수신한다. 이 방법은 또한 원본 문서 내에서의 의미 변환점에 기초하여 공유 문서의 서브섹션을 정의하고 각각의 서브섹션에 대한 서브섹션 ID를 발생한다. 서브섹션 ID는 그 각자의 장치 상에서 ID를 검토하고 하나 이상의 서브섹션을 수신하기 위해 요청을 할 수 있는 클라이언트로 전송된다. 요청된 서브섹션은 각자의 클라이언트 장치 상에서 사용하기 위해 트랜스코딩되고 그의 요청에 따라 클라이언트로 전송된다. 클라이언트는 이어서 하나 이상의 서브섹션을 수정하고 이들 수정이 다른 클라이언트 장치 상에서 대응하는 서브섹션에 적용된다.
문서 동기화, 서브섹션, 트랜스코딩, 해싱

Description

수정가능 문서를 다수의 클라이언트들과 동기화시키는 방법, 시스템 및 컴퓨터 판독가능 매체{METHODS, SYSTEMS, AND COMPUTER-READABLE MEDIA FOR SYNCHRONIZING MODIFIABLE DOCUMENTS WITH MULTIPLE CLIENTS}
본 발명의 실시예들은 네트워크를 통해 각종의 장치 상에서 다수의 클라이언트에 의해 액세스가능하고 수정가능한 문서를 동기화 및 업데이트하는 분야에 관한 것이다. 상세하게는, 본 발명의 실시예들은 단편 주문형 방식으로(on a piecemeal, on-demand basis) 비교적 큰 문서를 다수의 클라이언트들 간에 동기화시킬 수 있고, 그에 의해 각각의 특정의 클라이언트가 관심을 갖는 문서들의 일부분만이 제공되어 통신 속도를 높이고 파일 저장 요건을 최소화시키는 방법, 컴퓨터 판독가능 매체 및 데이터 구조에 관한 것이다.
많은 조직들은, 그 중에서도 특히, HTML(Hypertext Markup Language), 마이크로소프트 워드, PDF(Portable Document Format) 및 텍스트 등의 다양한 포맷으로 저장되어 있는 비교적 큰 공유 문서를 사용한다. 예를 들어, 이러한 큰 문서는 법률 회사가 보유하는 공유 법률 문서(shared legal document) 또는 엔지니어링 사무소나 회사가 보유하는 공유 엔지니어링 문서(shared engineering document)를 포함할 수 있다. 이러한 문서의 3가지 중요한 특성, 즉 (1) 이들 문서가 아주 클 수 있고, (2) 이들 문서가 빈번하게 수정되며, (3) 이들 문서가 각각의 클라이언트에 의해 이용되는 특정의 장치(모바일 장치를 포함함)에 의해 판독 및 디스플레이될 수 있는 포맷으로 되어 있지 않을 수 있는 점이 종래의 장치 상에서의 이들의 사용을 저해한다. 상세하게는, 많은 모바일 장치는 현재 적어도 3개의 영역, 즉 연결성(connectivity), 저장용량(storage) 및 기능성(functionality)에서 데스크톱 장치보다 뒤떨어진다. 예를 들어, GPRS(General Packet Radio Service) 통신은 저대역폭·고지연 연결(low-bandwidth, high-latency connection)을 보여준다. 게다가, 일반적인 저가의 종래 모바일 장치는 약 32MB의 메모리를 가질 수 있으며, 이는 저장될 수 있는 문서의 크기를 심각하게 제한한다. 또한, 많은 장치 상에서 문서에 액세스하고 이를 보기 위한 코드 또는 프로그램이 존재하지 않는다. 게다가, 어떤 포맷은 사용자 인터페이스 확장 문제로 인해 다른 포맷들보다 더 잘 렌더링될 수 있다. 그에 부가하여, 어떤 문서 포맷은 다른 문서 포맷들보다 확장하는 데 더 적은 메모리를 이용할 수 있다. 이들 문제 전부가 함께 작용하여 서로 다른, 특히 모바일 장치들 상에서 공동으로 비교적 큰 문서를 광범위하게 사용하는 것을 방해한다.
장치 상에서 비교적 큰 문서를 다운로드, 보기, 편집 및 업로드하는 것에서의 다른 문제는 이러한 문서를 다운로드하는 데 요구되는 시간이다. 예로서, 비교적 큰 문서가 이미 장치 상에 다운로드되어 있고 그 문서에 단지 작은 수정만이 필요한 경우, 전체 문서를 다운로드하는 것은 부족한 대역폭, 메모리, 시간 및 금액(예를 들어, 네트워크가 전송된 데이터량에 따라 과금하는 경우) 자원을 낭비할 수 있다.
종래의 시스템은 파일 동기화 시스템 및 방법으로 이들 문제를 해결하려고 한다. 종래의 파일 동기화 해결책에서는 전체 문서가 장치로 복제되어야만 한다. 어떤 PC-기반 애플리케이션은 한 걸음 더 나아가 그 문서를 장치가 판독할 수 있는 포맷으로 트랜스코딩(transcode)하지만, 이들 종래의 해결책 둘다에서의 문제점이 아직도 아주 많다. 예를 들어, 전체 문서를 전체적으로 동기화시키기 위해서는, 상기한 바와 같이, 모든 장치가 문서의 전체 내용을 제한된 양의 메모리에 저장할 수 있어야만 한다. 게다가, 문서의 작은 부분을 수정하기 위해서도 전체 문서가 장치로 다운로드되어야만 한다. 무선 네트워크(예를 들어, GPRS)의 종래의 저대역폭 및 고지연 특성 및 전송된 데이터의 바이트당 지불하는 종래의 요금 구조로 인해, 전체 문서를 장치로 다운로드하는 것은 (금전적으로도 시간적으로도) 비싸지게 된다. 다른 종래의 예에서, 한번에 전송되는 데이터의 양을 감소시키기 위해 긴 문서의 개개의 페이지가 하나씩 다운로드될 수 있다. 그렇지만, 이 해결책은 스트리밍가능한 파일(예를 들어, html 파일)에만 적용가능하며, 종종 클라이언트 장치와 프로그램 간의 차이로 인해, 페이지를 수신하는 클라이언트에 의한 편집에 그다지 도움이 되지 못한다. 게다가, 이 프로세스는 정보의 다운로드만을 고려하고 있을 뿐이며, 클라이언트 수정의 편집 및 업로드에는 대비하고 있지 않다. 다른 종래의 시스템은 신뢰할 수 없는 연결과 연관되어 있는 문제를 방지하기 위해 데이터를 오프라인으로 동기화시킨다. 그렇지만, 이 해결책은 부적절한 저장 및 전송 시간의 문제를 해결하지 못하며, 이는 큰 문서 크기로 인해 오프라인 동기화(offline synching)에서 여전히 문제가 될 수 있다.
불행히도, 이들 문제가 어떤 종래의 시스템에 의해서도 해결되지 않는다. 따라서, 큰 문서를 다수의 클라이언트들 간에 동기화시키는 것을 개선시키는 해결책이 바람직하다.
따라서, 이들 및 다른 단점들 중 하나 이상을 해결하기 위해, 단편 주문형 방식으로(on a piecemeal, on-demand basis) 비교적 큰 문서를 다수의 클라이언트들 간에 동기화시키고, 그에 의해 흥미있는 문서들의 일부분만이 각각의 특정의 클라이언트로 전송되는 방법(또는 컴퓨터 판독가능 매체 또는 데이터 구조)이 요망된다. 유익하게도, 본 발명의 적어도 하나의 실시예는 문서의 각각의 부분을 특정의 모바일 장치에 의해 이해되는 포맷으로 개별적으로 트랜스코딩한다. 그에 부가하여, 변경이 행해질 때마다 수정된 서브섹션 전체를 다운로드하기보다는, 본 발명의 적어도 하나의 실시예는 클라이언트가 예약 구독하는 문서의 그 수정된 부분만을 수정하는 명령어를 다운로드한다. 일반적으로, 본 발명의 측면들은 선호 데이터 포맷에 관한 명령어를 하나 이상의 클라이언트로부터 수신함으로써 문서를 다수의 클라이언트들과 동기화시키는 단계, 원본 문서의 서브섹션을 정의하는 단계, 상기 서브섹션들 각각을 식별해주는 서브섹션 ID를 발생하는 단계, 상기 서브섹션 ID의 리스트를 상기 하나 이상의 클라이언트로 전송하는 단계, 상기 하나 이상의 클라이언트 중 적어도 하나로부터 상기 서브섹션들 중 하나 이상을 예약 구독하기 위한 요청을 수신하는 단계, 상기 요청에 응답하여, 상기 서브섹션들 중 상기 하나 이상을 각각의 클라이언트의 선호 포맷으로 트랜스코딩하는 단계, 각각의 클라이언트 예약 구독 요청에 따라 상기 트랜스코딩된 예약 구독된 서브섹션들을 전송하는 단계를 가능하게 해준다. 예를 들어, 본 발명의 실시예들은 각각이 개별적인 장치를 이용하는 일군의 클라이언트들에 의한 하나의 큰 공유 문서에 대한 협업에 아주 적합할 수 있다.
본 발명의 한 측면에서, 문서를 다수의 클라이언트들과 동기화시키는 방법이 기술되어 있다. 이 방법은 하나 이상의 클라이언트들로부터 상기 하나 이상의 클라이언트들 각각이 데이터를 수신하고자 하는 포맷에 관한 명령어를 수신하는 단계를 포함한다. 이 방법은 또한 상기 클라이언트 중 하나 이상이 아마도 관심을 가질 수 있는 원본 문서의 서브섹션들을 정의하는 단계를 포함한다. 상기 서브섹션들은 상기 원본 문서 내에서의 의미 변환점(semantic break)에 대응한다. 이 방법은 또한 상기 서브섹션들 각각을 식별해주는 서브섹션 ID를 발생하는 단계, 및 상기 서브섹션 ID의 리스트를 상기 하나 이상의 클라이언트들로 전송하는 단계를 포함한다. 이 방법은 또한 상기 하나 이상의 클라이언트들 중 적어도 하나로부터 상기 서브섹션들 중 하나 이상을 예약 구독하기 위한 요청을 수신하고, 상기 요청에 응답하여, 하나 이상의 클라이언트들이 예약 구독하고자 하는 상기 원본 문서의 상기 서브섹션들 중 상기 하나 이상을 상기 각자의 하나 이상의 클라이언트들이 데이터를 수신하고자 하는 상기 포맷으로 트랜스코딩(transcode)한다. 이 방법은 또한 그 각자의 예약 구독 요청에 따라 상기 트랜스코딩된 예약 구독된 서브섹션을 상기 하나 이상의 클라이언트들로 전송한다.
본 발명의 다른 측면에서, 문서를 다수의 클라이언트들과 동기화시키는 시스템이 제공되며, 상기 클라이언트들은 네트워크를 통해 상기 시스템과 연결되도록 구성되어 있고, 상기 시스템은 서버와 데이터베이스를 포함한다. 상기 서버는 상기 네트워크와 연결되도록 구성되어 있으며, 상기 클라이언트들 중 하나 이상으로부터, 상기 하나 이상의 클라이언트들 각각이 상기 네트워크를 통해 상기 서버로부터 데이터를 수신하고자 하는 포맷에 관한 명령어를 수신하도록 구성되어 있다. 상기 시스템은 또한 상기 서버와 연결되어, 상기 클라이언트들 중 하나 이상이 아마도 관심을 가질 수 있는 원본 문서를 저장하도록 구성되어 있다. 상기 서버는 또한, 상기 데이터베이스 상에 저장된 상기 원본 문서의 서브섹션들을 정의하도록 구성되어 있다. 상기 정의된 서브섹션들은 상기 원본 문서 내에서의 의미 변환점(semantic break)에 대응한다. 상기 시스템은 또한 상기 서브섹션들 각각을 식별해주는 서브섹션 ID를 발생하며, 상기 서브섹션 ID의 리스트를 상기 네트워크를 통해 상기 하나 이상의 클라이언트들 각각으로 전송한다. 상기 시스템은 또한 상기 하나 이상의 클라이언트들 중 적어도 하나로부터 상기 네트워크를 통해 상기 서브섹션들 중 하나 이상을 예약 구독하기 위한 요청을 수신한다. 상기 시스템은 또한, 상기 수신된 요청에 응답하여, 하나 이상의 클라이언트들이 예약 구독하고자 하는 상기 원본 문서의 상기 서브섹션들 중 상기 하나 이상을 트랜스코딩(transcode)하고, 그 각자의 예약 구독 요청에 따라 상기 트랜스코딩된 예약 구독된 서브섹션을 상기 하나 이상의 클라이언트들로 전송한다.
본 발명의 또다른 측면에서, 본 발명의 방법 및 시스템과 관련하여 이상에서 전반적으로 기술된 바와 같이 수신, 정의, 발생, 전송, 수신, 트랜스코딩 및 전송하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체가 기술되어 있다.
다른 대안으로서, 본 발명은 여러가지 다른 방법, 컴퓨터 판독가능 매체, 시스템 및 데이터 구조를 포함할 수 있다.
다른 특징들은 부분적으로는 자명하고 부분적으로는 이후부터 제시된다.
도 1은 본 발명의 시스템을 나타낸 도면.
도 2는 본 발명에 따른 다수의 서브섹션을 갖는 문서를 나타낸 도면.
도 3 내지 도 3d는 본 발명의 방법의 플로우차트.
도 4는 본 발명의 컴퓨터 판독가능 매체(computer-readable medium, CRM)를 나타낸 도면.
도 5는 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 일례를 나타낸 블록도.
도면들 전체에 있어서 대응하는 참조 번호는 대응하는 부분을 나타낸다.
이제 도 1을 참조하면, 문서를 네트워크(29)를 통해 본 발명의 시스템(전체를 21로 나타냄)과 연결하도록 구성되어 있는 다수의 클라이언트(25)와 동기화시키는 본 발명의 시스템을 나타낸 도면이 도시되어 있다. 이 시스템(21)의 상세가 본 명세서에 상세히 기술되어 있으며, 이하의 설명 전반에 걸쳐 참조된다. 시스템(21)은 일반적으로 서버(33) 및 데이터베이스(37)를 포함한다. 예시된 실시예에 서, 서버(33)는 네트워크를 통해 클라이언트(25)로 명령어를 전송(41)하고 또 네트워크를 통해 클라이언트 중 하나 이상으로부터 명령어를 수신(45)하기 위해 네트워크(29)와 연결되도록 구성되어 있다. 데이터베이스(37)는 클라이언트(25) 중 하나 이상이 아마도 관심을 가질 수 있는 원본 문서를 저장하기 위해 서버(33)와 연결되도록 구성되어 있다. 게다가, 서버(33)는 데이터베이스(37)로 명령어를 전송(49)할 수 있고, 데이터베이스로부터 명령어를 수신(51)할 수 있다. 클라이언트(25) 각각은, 네트워크로 통신을 전송하는 것 및 네트워크로부터 통신을 수신하는 것을 비롯하여, 네트워크(29)와 직접 통신(55)하도록 구성되어 있다. 시스템(21)의 서버(33) 및 데이터베이스(37)는 또한 본 발명의 다수의 방법들과 관련하여 이하에 기술되는 기능을 제공하도록 구성되어 있다.
문서를 다수의 클라이언트들과 동기화시키는 방법
도 1 및 도 3 내지 도 3d를 참조하여, 문서를 다수의 클라이언트(25)와 동기화시키는 방법이 기술되며, 바로 위에서 기술한 시스템(21) 및 도 3 내지 도 3d의 플로우차트를 참조하여 설명할 것이다. 본 명세서에서 사용되는 바와 같이, 장치를 통해 통신하는 클라이언트 또는 사용자(25)는, 그 중에서도 특히, 개인, 일군의 개인, 또는 한명 이상의 개인의 제어 하에 동작하는 자동화된 장치를 나타내는 임의의 수의 개체(entity)일 수 있다. 장치, 컴퓨터 또는 컴퓨팅 장치라는 용어는, 본 명세서에서 사용되는 바와 같이, 그 중에서도 특히, 퍼스널 컴퓨터, 랩톱 컴퓨터 또는 핸드헬드 컴퓨터는 물론 셀룰러 전화, 개인 휴대 단말기(PDA) 및 기타 휴대용 미디어 장치(이에 한정되는 것은 아님)를 비롯한 각종의 서로 다른 장치를 포 함할 수 있다. 여기에 특별히 언급되지 않은, 문서에 액세스하는 기타의 장치 또는 수단도 역시 본 발명의 범위 내에 있는 것으로 생각된다.
본 방법에 따르면, 서버(33)는 하나 이상의 클라이언트 각각이 데이터를 수신하고자 하는 포맷에 관한 명령어를 하나 이상의 클라이언트(25)로부터 수신(45)할 수 있다(도 3 참조). 일례에서, 이 포맷팅 선택은 장치와의 모든 통신이 이해가능한 포맷으로 되어 있도록 보장하기 위해 프로세스에서 조기에 행해질 수 있지만, 이러한 선택이 프로세스에서 나중에 행해질 수 있는 것도 생각된다. 각각의 클라이언트는, 그 중에서도 특히, html 포맷팅, 형식있는 텍스트 문서(formatted text document)(예를 들어, 마이크로소프트 워드 문서, RTF(rich text format) 문서, PDF(Portable Document Format), 기타), ASCII 텍스트 포맷팅을 비롯한, 임의의 수의 서로 다른 포맷을 요청할 수 있다. 본 발명의 시스템(21) 및 방법은, 전송되는 데이터가 클라이언트들 각각에 의해 액세스가능하도록 보장하기 위해, 각각의 클라이언트(25)로 전송(41)할 데이터를 트랜스코딩할 때 이들 포맷팅 명령어를 이용할 수 있다.
이제 도 2를 참조하면, 하나 이상의 클라이언트(25)가 아마도 관심을 가질 수 있는 문서의 도면이 전체로서 61로 나타내어져 있다. 공통의 문서를 공유하고 이를 사용하여 협업하는 다수의 클라이언트(25)는 본 발명의 시스템 및 방법으로부터 이익을 보게 된다. 상세하게는, 특히 큰 문서를 공유하는 클라이언트(25)는 본 발명의 시스템 및 방법을 이용함으로써 상당한 기능성을 달성할 것 같다. 도 2의 문서(61)가 이러한 비교적 큰 문서인 것으로 가정하면, 본 발명의 방법은 또한 원 본 문서의 서브섹션(A-F)(각각이 65로 나타내어져 있음)을 정의(75)한다(도 3 참조). 이들 서브섹션(65)은 원본 문서(61) 내에서의 의미 또는 논리 변환점(semantic or logical break)에 대응한다. 일례에서, 서브섹션(65)은 원본 문서(61)와 연관된 목차에 따라 설정될 수 있다. 문서(61)의 목차 또는 다른 논리적 구성 방식을 이용하여 서브섹션을 설정함으로써, 본 발명은 문서를 클라이언트(25)에 의미가 있는 논리적 서브섹션으로 분할할 수 있다. 게다가, 서브섹션(65)은 문서 내의 논리적 위치에서 시작하고 끝날 가능성이 더 많다. 이 특정의 방식은 텍스트의 페이지의 끝, 각각의 서브섹션에서의 단어 수, 각각의 서브섹션의 메모리 할당, 또는 기타 임의적인 척도에 기초하여 문서를 분할할 수 있는 종래의 방법보다 훨씬 더 직관적이고 도움이 된다.
일례에서, 원본 문서(61)의 서브섹션(65)을 정의하는 단계(75)는 문서 내의 논리 변환점을 식별해주는 문서와 연관된 목차에 기초하여 문서를 서브섹션들로 분할하는 단계(75)를 포함한다. 이러한 목차를 이용하는 것은 적절한 서브섹션(65)이 정의되도록 보장해주는 데 도움이 되는데, 그 이유는 문서의 내용에 따라 문서(61)의 초안자(drafter)에 의해 목차가 이미 논리적으로 생성되었기 때문이다. 일례에서, 이러한 목차는 클라이언트-정의될 수 있다. 목차가 없는 경우, 원본 문서(61)의 서브섹션(65)은 문서 자체의 본래의 구조에 기초하여 목차를 발생함으로써 정의될 수 있다. 예를 들어, 목차의 자동적 발생은 마이크로소프트 워드 문서의 개요 보기(outline view)를 이용하는 것, 문서 내에 포함된 제목(heading) 및 부제목(subheading)을 이용하는 것, 및 문서 내의 공백 인식을 이용하는 것을 비롯 한 임의의 수의 방법으로 행해질 수 있다. 목차를 자동적으로 설정하는 다른 방법들도 역시 청구된 발명의 범위 내에 속하는 것으로 생각된다.
본 방법은 또한 서브섹션(65) 각각을 식별해주는 서브섹션 ID를 발생하는 단계(79)를 생각하고 있다(도 3 참조). 이들 섹션 ID는 클라이언트에 의한 용이한 검토 및 고려를 위해 임의의 수의 논리적 방법으로 구조화될 수 있다. 일례에서, 서브섹션 ID를 발생하는 단계는 서브섹션(65)의 이름과 문서 내에서의 서브섹션의 위치를 서로 연계시키는 단계(79)를 포함할 수 있다. 이와 같이, 서브섹션 ID를 검토하는 것만으로 서브섹션(65)의 전반적 내용 및 다른 서브섹션들에 대한 그의 상대적 위치를 용이하게 알 수 있다. 예를 들어, 도 2의 서브섹션(65)에 있어서, 서브섹션 ID는 1A, 2B, 3C, 4D, 5E 및 6F 정도로 간단할 수 있으며, 여기서 서브섹션 ID의 숫자 부분은 문서(61) 내에서의 서브섹션의 위치를 나타내고 문자 A-F는 서브섹션에서 논의되는 주제를 나타낸다. 도 2의 예시적인 실시예에서, 문자 A-F는 서브섹션의 내용을 나타내는 주제 제목으로 용이하게 대체될 수 있다(예를 들어, 1Apples, 2Bananas, 기타). 당업자라면 용이하게 안출할 수 있는 바와 같이, 청구된 발명의 범위를 벗어나지 않고 이러한 서브섹션 ID를 식별하는 다른 방법들도 사용될 수 있다.
서브섹션 ID가 결정되었으면, 서버(33)는, 클라이언트가 서브섹션 ID를 검토하고 어느 서브섹션을 예약 구독할지를 결정할 수 있도록, 네트워크(29)를 통해 서브섹션 ID의 리스트를 하나 이상의 클라이언트(25)로 전송(41)한다(도 1 및 도 3 참조). 이와 같이, 클라이언트(25)는, 서브섹션 ID를 검토하기 이전에 전체 문서 또는 문서의 일부분조차도 다운로드할 필요없이 서브섹션(65)들 중 임의의 것을 예약 구독하고자 하는지를 판정하기 위해, 문서(61)의 서브섹션 ID, 따라서 그의 내용의 요약을 신속하게 살펴볼 수 있다.
각각의 클라이언트(25)는 서브섹션(65) 중 하나 이상을 예약 구독하기 위한 요청을 네트워크(29)를 통해 전송(55)하는 옵션을 갖는다. 서버(33)는 하나 이상의 클라이언트(25) 중 적어도 하나로부터 서브섹션(65) 중 하나 이상을 예약 구독하기 위한 이러한 요청을 수신(83)한다(도 3 참조). 서버(33)는 각각의 클라이언트(25)로부터 각각의 클라이언트가 그의 장치 상에서의 문서(61)의 보기(view)를 커스터마이즈(customize)할 수 있게 해주는 다른 예약 구독 요청을 수신할 수 있다. 예를 들어, 도 1 및 도 2에 도시된 바와 같이, 서버(33)는 클라이언트 1로부터 서브섹션 A를 수신하기 위한 요청을 수신(45)할 수 있는 반면, 클라이언트 2는 서브섹션 A, C 및 F를 수신하기로 결정하며, 클라이언트 3은 서브섹션 F만을 수신하기로 결정한다. 이 예에서, 전체 문서를 각각의 클라이언트(25)로 전송할 필요없이, 시스템(21)은 단지 그 요청을 하는 각자의 클라이언트에 서브섹션 또는 서브섹션들(65)만을 전송할 수 있다.
클라이언트들 중 하나 이상으로 데이터를 전송(41)하기 이전에, 서버(33)는 또한, 클라이언트 요청(들)에 응답하여, 하나 이상의 클라이언트(25)가 예약 구독하고자 하는 원본 문서(61)의 서브섹션(65) 중 하나 이상을 각자의 하나 이상의 클라이언트가 데이터를 수신하고자 하는 포맷으로 트랜스코딩(87)한다(도 3 참조). 상기한 예에서, 예약 구독된 서브섹션(65) 각각은 액세스 및 수정을 위해 클라이언 트(25) 각각의 특정의 포맷팅 요구사항에 따라 트랜스코딩될 수 있다. 본 명세서에서 사용되는 바와 같이, 트랜스코딩된 항목은, 이용되는 애플리케이션, 사용되는 언어, 이용되는 뷰잉 장치(viewing device), 또는 요구되는 통신 프로토콜에 상관없이, 서로 다른 플랫폼 상에서 액세스, 보기, 수정 및/또는 다른 방식으로 이용될 수 있도록 포맷팅 또는 구성되어 있는 항목을 말한다. 트랜스코딩된 문서를 이용하거나 트랜스코딩된 보기(view)를 제공함으로써, 몇가지 서로 다른 클라이언트(25)가 서로 다른 프로그램, 화면, 프로토콜, 기타 등등을 이용하여 서로 다른 장치 상에서 동일한 문서(61) 또는 파일을 볼 수 있다. 이것은 각각이 서로 다른 장치를 이용하는 일군의 클라이언트(25)에 의한 하나의 큰 공유 문서(61)에 대한 협업을 가능하게 해준다. 여기서 유의할 점은 트랜스코딩이 다른 대안으로서 클라이언트(25)에서 행해질 수 있다는 것이다.
트랜스코딩되었으면, 서버(33)는 그 각자의 예약 구독 요청에 따라 트랜스코딩된 예약 구독된 서브섹션(65)을 하나 이상의 클라이언트(25)로 전송(91)할 수 있다(도 3 참조). 이어서, 클라이언트(25)는 예약 구독한 서브섹션(65)의 내용을 볼 수 있다. 일례에서, 서버(33)는 특정의 클라이언트(25)가 예약 구독한 서브섹션만을 전송한다. 이 예에서, 서버(33)는 클라이언트에게 그 클라이언트가 예약 구독하지 않은 서브섹션을 전송하지 않는다. 각각의 클라이언트는 개별적으로 언제라도 그의 예약 구독을 변경, 서브섹션을 추가, 서브섹션을 제거 또는 서브섹션을 수정할 수 있으며, 이에 대해서는 이하에서 더 상세히 기술할 것이다.
서브섹션 샘플링(subsection sampling)
다른 예에서, 본 발명의 측면들을 구현하는 방법은 또한 서브섹션의 내용의 샘플 부분을 검토하도록 서브섹션(65)의 샘플 부분(71)을 예약 구독하지 않는 클라이언트(25)에게 제공(95)할 수 있다(도 3a 참조). 어떤 경우에, 서브섹션 ID만으로는 문서(61)의 서브섹션(65)를 예약 구독하는 것을 고려하고 있는 각각의 예약 구독하지 않는 클라이언트(25)에게 적절한 정보를 제공하지 못할 수 있다. 그에 부가하여, 시스템(21)은 클라이언트에게 검토를 위한 하나 이상의 서브섹션(65)의 샘플 부분(71)을 제공할 수 있다. 일례에서, 시스템(21)은 그에 부가하여 예약 구독하지 않는 클라이언트(25)에게 서브섹션(65) 중 하나 이상의 샘플 부분(71)을 요청하는 선택 요소(selection element)를 제공(97)한다(도 3a 참조). 다른 예에서, 시스템(21)은 서브섹션(65) 중 하나, 몇몇 또는 그 전부에 샘플 부분(71)을 자동적으로 제공한다. 샘플 부분(71)이 서브섹션 ID와 함께 포함되어 있는 경우, 시스템(21)은 또한 예약 구독하지 않는 클라이언트에게 샘플링된 서브섹션(65)을 예약 구독하기로 또는 예약 구독하지 않기로 결정하기 위한 선택 요소를 제공(99)할 수 있다. 다른 특징들은 임의의 특정의 클라이언트(25)로 다운로드되거나 그로부터 업로드되는 데이터의 양을 최소화함으로써 본 방법의 사용의 상대적 용이성을 유지하는 데 도움이 된다. 상세하게는, 서브섹션(65)의 샘플 부분(71)을 제공하는 단계는 또한 네트워크 및 장치 중 적어도 하나의 성능에 기초하여 다운로드 및 저장에 적당한 크기의 샘플 부분을 예약 구독하지 않는 클라이언트(25)의 장치에 제공하는 단계(95)를 포함할 수 있다. 당업자라면 본 발명의 무엇보다 중요한 이점, 즉 특정의 클라이언트(25)의 요구를 만족시키는 데 필요한 거의 최소량으로 클라이 언트 장치 및 네트워크의 대역폭 및 메모리를 신중히 이용하는 것에 부정적인 영향을 주지 않는 정확한 크기의 샘플 부분(71)을 어떻게 선택할지를 잘 알 것이다.
클라이언트(25)가 본 방법에 따라 시스템(21)의 서버(33)와 상호작용할 수 있도록 해주기 위해 본 명세서에서 일반적으로 선택 요소가 제공된다. 일례에서, 서버(33)는 클라이언트의 장치 상에 포함되어 있는 클라이언트(25)와 상호작용하기 위한 사용자 인터페이스를 제공(103)함으로써 이러한 기능을 제공한다(도 3 참조). 이러한 사용자 인터페이스는, 예를 들어, 클라이언트가 문서(61)의 서브섹션(65)에 예약 구독(subscribe)하거나 예약 구독 취소(unsubscribe)를 할 수 있게 해주는 적어도 하나의 선택 요소를 포함할 수 있다. 본 명세서에 기술된 바와 같이, 사용자 인터페이스를 통해 각각의 클라이언트(25)에 다른 선택 요소들도 제공될 수 있다.
서브섹션의 클라이언트 수정
특정의 서브섹션(65)을 검토할 시에, 클라이언트(25)는 그 서브섹션에 하나 이상의 수정을 하기 위해 그의 장치 상의 애플리케이션을 이용할 수 있다. 이들 수정은, 몇가지를 열거하자면, 텍스트를 추가하는 일, 텍스트를 삭제하는 일, 텍스트를 수정하는 일, 텍스트를 재정렬하는 일을 비롯한 임의의 수의 일을 할 수 있다. 상세하게는, 서버(33)는 관심의 서브섹션(65)의 내용을 수정, 관심의 서브섹션에 내용을 추가, 또는 관심의 서브섹션으로부터 내용을 제거하는 명령어를 포함하는 적어도 하나의 동작을 예약 구독하는 클라이언트(25) 중 하나로부터 수신(105)한다(도 3 참조). 이들 동작들 중 하나 이상의 조합도 역시 본 방법에 따라 서버(33)에 의해 수신될 수 있다. 이러한 수정은 자동적으로 또는 클라이언 트(25)에 의해 특별히 지시된 대로 서버(33)로 전송될 수 있다. 여기서 수정된 서브섹션(65) 전체가 서버(33)로 전송될 필요가 없고 예약 구독하는 클라이언트(25) 중 하나에 의해 서브섹션에 대해 개시되는 동작만이 전송된다는 것에 유의하는 것이 중요하다. 예를 들어, 클라이언트(25)가 제1 텍스트 문자열(예를 들어, "월드 와이드 웹")에 대한 모든 참조를 제거하고 그를 제2 텍스트 문자열(예를 들어, "WWW")로 대체하는 경우, 예약 구독자 각각에 대한 서브섹션(65)에 적용하기 위해 제1 문자열을 제2 문자열로 대체하는 비교적 간단한 동작만이 서버(33)로 전송되면 된다. 수정된 서브섹션 전체가 아니라 동작만을 전송 및 수신함으로써, 훨씬 더 적은 데이터가 전송되고, 그에 의해 메모리 요건을 감소시키고 또 업데이트(update)가 서버(33)에 의해 수신되고 예약 구독하는 클라이언트(25)로 다시 전송되는 속도를 증가시킨다.
이제 도 3d를 참조하면, 본 발명의 측면들은 또한 동기화를 검사하는 것을 가능하게 해준다. 주기적으로, 또는 특정의 서브섹션(65)이 클라이언트(25)에 의해 수정되었을 수 있음을 나타내는 서버(33)에 의해 수신된 정보에 응답하여, 본 시스템(21)의 서버는 데이터베이스(37)에 저장된 서브섹션을 클라이언트 장치에 저장된 서브섹션들 중 하나, 몇몇 또는 그 전부와 비교할 수 있다. 일례에서, 시스템(21)은 하나 이상의 클라이언트(25)가 예약 구독하고 있는 원본 문서(61)의 관심의 서브섹션(들)(65)을 원본 문서의 서브섹션의 내용을 나타내는 숫자값으로 해싱(107)한다(도 3d 참조). 이어서, 시스템(21)은 원본 문서(61)의 수정된 서브섹션(65)을 적어도 하나의 수정된 서브섹션의 내용을 나타내는 숫자값으로 해싱(109) 한다. 이 2개의 해쉬값을 사용하여, 시스템(21)은 이어서 원본 문서의 서브섹션이 수정되었는지를 판정하기 위해 원본 문서(61)의 서브섹션(65)의 숫자값을 수정된 서브섹션의 숫자값과 비교(111)한다(도 3d 참조). 단지 데이터의 추가 또는 삭제에 불과할 수 있는 수정이 검출되면, 시스템(21)은 수정된 서브섹션(65)과 연관된 동작(들)을, 각각의 클라이언트에 대한 서브섹션을 수정하는 데 사용하기 위한 서브섹션을 예약 구독하고 있는 클라이언트(25)에 제공(113)한다. 이러한 수정 이후에, 각각의 클라이언트(25)는 수정된 서브섹션의 동일한 복사본을 가지며, 그에 의해 문서(61)에서의 마지막 변경에 대한 용이한 검토 및 액세스를 가능하게 해준다. 일례에서, 동작(들)이 서브섹션(65)에 내용을 추가할 때, 서버(33)는 서브섹션 ID의 업데이트된 리스트를 모든 클라이언트로 전송(115)한다. 이 동작은 예약 구독자가 특별한 관심을 보였던 서브섹션(65)에 관한 정보를 예약 구독자에게 제공하고 추가된 내용이 특별한 관심을 가질 수 있는 경우 서브섹션을 예약 구독할 기회를 비예약 구독자(non-subscriber)에게 제공한다.
동작(들)이 서브섹션(65)의 내용을 수정 또는 삭제하기만 하는 다른 예에서, 서버(33)는 예약 구독하는 클라이언트(25) 중 하나로부터 예약 구독하는 클라이언트 모두에게로 동작(들)을 전송(117)한다(도 3c 참조). 이 예에서, 예약 구독자는 그의 장치 상에 서브섹션의 업데이트된 버전을 유지하고자 한다는 것을 보여주었다. 그렇지만, 서버는 예약 구독하지 않는 클라이언트(25)로 이들 수정 또는 삭제 동작을 전송하지 않는데, 그 이유는 서브섹션(65) 내의 정보의 제거 또는 수정이 비예약 구독자에게 흥미를 주지 않을 수 있기 때문이다.
다른 예에서, 시스템(21)은 원본 문서(61)의 서브섹션들 중 하나 이상을 해싱하기 이전에 또 원본 문서의 수정된 서브섹션을 해싱하기 이전에 하나 이상의 서브섹션(65)의 포맷팅 속성(formatting attribute)을 제거(119)할 수 있다. 이것은, 원본 서브섹션과 아마도 수정된 서브섹션의 해싱을 비교할 때, 클라이언트 장치 상에서 서브섹션(65)에 대해 행해졌을 수 있는 포맷팅 변경이 변경된 문서 서브섹션에 대한 오탐(false positive)을 야기하지 않도록 보장해준다.
예약 구독하는 클라이언트(25)로 수정된 것을 전송하는 것에 부가하여, 이 시스템은 또한 수정된 서브섹션을 예약 구독하지 않는 클라이언트로 수정된 서브섹션(65)의 통지를 전송한다. 일례에서, 수정된 서브섹션을 예약 구독하지 않는 클라이언트(25)로 수정된 서브섹션(65)의 통지를 전송하는 단계는 수정된 서브섹션을 나타내기 위해 서브섹션 ID의 리스트를 업데이트하는 단계(115)를 포함한다(도 3c 참조). 이와 같이, 예약 구독하지 않는 클라이언트(25)는 또다시 각각의 서브섹션을 다운로드하지 않고서 어떤 서브섹션이 변경되었는지를 판정하기 위해 단지 서브섹션 ID의 업데이트된 리스트만을 검토할 수도 있다.
또다른 예에서, 2개 이상의 클라이언트(25)가 동일한 문서 서브섹션(65)을 수정하려고 시도할 수 있으며, 이 경우 시스템(21)은 충돌 해결 방법을 이용해야만 한다. 이러한 경우에, 서버(33)는 예약 구독하는 클라이언트(25) 중 2개 이상(예를 들어, 클라이언트 1 및 클라이언트 2)으로부터 동일한 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작을 수신(121)할 수 있다(도 3b 참조). 서버(33)는, 충돌 해결 방법을 이용함으로써, 동일한 예약 구독된 서브섹션(65)을 수정하기 위한 예약 구독하는 클라이언트(25) 중 하나로부터 수신된 동작(들)과 예약 구독하는 클라이언트 중 다른 하나로부터 수신된 동작(들) 간의 임의의 충돌을 해결(123)한다. 일례에서, 서버(33)는 수정 허가 계층구조(modification authority hierarchy)를 적용하여, 이 계층구조에서의 각각의 예약 구독하는 클라이언트(25)의 위치에 기초하여 클라이언트 1 또는 클라이언트 2로부터의 적어도 하나의 동작을 적용할지를 판정한다. 예를 들어, 수정 허가 계층구조에서 클라이언트 2가 클라이언트 1보다 앞선 순위에 있는 경우, 클라이언트 1의 수정 대신에 클라이언트 2의 수정이 이용된다. 다른 예에서, 서버(33)는 예약 구독하는 클라이언트(25)에 의해 동작들 각각이 시작된 시간에 기초하여 시간 요건을 만족시키는 수신된 동작을 이용함으로써 임의의 충돌을 해결한다. 서버(33)는, 몇가지 예를 들면, 2개의 수정 동작 중 이른 것(earlier), 2개의 수정 동작 중 늦은 것(latter), 또는 특정의 시간에 가장 가까운 수정 동작을 이용할 수 있다. 시스템(21)은 그에 부가하여 또는 다른 대안으로서 충돌 해결으로 인해 클라이언트(25)의 수정이 사용되지 않은 경우 그 클라이언트(25)에 통지를 할 수 있으며, 따라서 그 클라이언트는 이러한 변경이 이용되지 않을 것임을 알게 된다.
다른 예에서, 서버(33)는 클라이언트 1 및 클라이언트 2로부터 적어도 하나의 동작을 수신하고 한쪽 클라이언트(예를 들어, 클라이언트 1)의 동작을 다른쪽 클라이언트(예를 들어, 클라이언트 2)로 전송한다. 그 자신의 동작이 수중에 있고 클라이언트 1의 동작이 서버로부터 전송된 경우, 클라이언트 2는 제안된 변경 각각을 나란히 검토하여, 있는 경우, 양 세트의 동작 중 어느 동작을 채택해야 하는지 를 결정할 수 있다. 이와 같이, 클라이언트(25) 중 하나가 충돌 해결의 역할을 수행한다. 당업자라면 잘 알 것인 바와 같이, 청구된 발명의 범위를 벗어나지 않고서 임의의 수의 서로 다른 충돌 해결 방식이 이용될 수 있다.
문서를 다수의 클라이언트들과 동기화시키는 컴퓨터 판독가능 매체
도 4는 본 발명의 컴퓨터 판독가능 매체(CRM)를 나타낸 도면이다. 이 컴퓨터 판독가능 매체는 문서를 다수의 클라이언트들과 동기화시키는 컴퓨터 실행가능 명령어를 갖는다. 단계들을 수행하는 컴퓨터 실행가능 명령어는 하나 이상의 클라이언트들로부터 이 하나 이상의 클라이언트들 각각이 데이터를 수신하고자 하는 포맷에 관한 명령어를 수신하는 수신 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또한 원본 문서의 서브섹션들을 정의하는 정의 명령어를 포함하며, 이 원본 문서는 클라이언트 중 하나 이상이 아마도 관심을 가질 수 있고, 이들 서브섹션은 원본 문서 내에서의 의미 변환점(semantic break)에 대응한다. 컴퓨터 실행가능 명령어는 또한 서브섹션들 각각을 식별해주는 서브섹션 ID를 발생하는 발생 명령어, 및 서브섹션 ID의 리스트를 하나 이상의 클라이언트들로 전송하는 전송 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또한 하나 이상의 클라이언트들 중 적어도 하나로부터 서브섹션들 중 하나 이상을 예약 구독하기 위한 요청을 수신하는 수신 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또한, 이 요청에 응답하여, 하나 이상의 클라이언트들이 예약 구독하고자 하는 원본 문서의 서브섹션들 중 하나 이상을 각자의 하나 이상의 클라이언트들이 데이터를 수신하고자 하는 포맷으로 트랜스코딩(transcode)하는 트랜스코딩 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또 한 그 각자의 예약 구독 요청에 따라 트랜스코딩된 예약 구독된 서브섹션을 하나 이상의 클라이언트들로 전송하는 전송 명령어를 포함한다.
역시 도 4에 나타내어져 있는 다른 예에서, 컴퓨터 실행가능 명령어는 또한 예약 구독하는 클라이언트들 중 하나로부터 원본 문서의 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작을 수신하는 수신 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또한 하나 이상의 클라이언트들이 예약 구독하는 원본 문서의 서브섹션들 중 하나 이상을 원본 문서의 내용을 나타내는 숫자값으로 해싱하는 해싱 명령어, 및 원본 문서의 수정된 서브섹션을 적어도 하나의 수정된 서브섹션의 내용을 나타내는 숫자값으로 해싱하는 해싱 명령어를 포함한다. 컴퓨터 실행가능 명령어는 원본 문서의 서브섹션의 숫자값을 수정된 서브섹션의 숫자값과 비교하여 원본 문서의 서브섹션이 수정되었는지를 판정하는 비교 명령어를 포함한다. 컴퓨터 실행가능 명령어는 또한 클라이언트에 대한 서브섹션을 수정하는 데 사용하기 위해 서브섹션과 연관된 적어도 하나의 동작을 서브섹션을 예약 구독하는 클라이언트들에게 제공하는 제공 명령어를 포함한다.
이하의 예는 본 발명의 예시적인 동기화 알고리즘을 보여준다. 이상에서 전반적으로 설명한 바와 같이, 클라이언트(25)는 그가 수신하고자 하는 데이터의 포맷을 서버(33)에 지정하는 것으로 시작한다(예를 들어, 서버 문서(61)는 마이크로소프트 워드 문서 포맷으로 저장되어 있을 수 있는 반면, 장치는 기본적인 HTML만을 이해할 뿐이다). 이하는 예시적인 클라이언트 요청이다.
<Sync>
<ContentType>BasicHtml</ContentType>
</Sync>
이 예에서 원본 문서(61)의 5개의 서브섹션(65)을 정의하고 서브섹션들 각각을 식별해주는 고유의 서브섹션 ID(예를 들어, Part1, Part2, 기타)를 발생한 후에, 서버(33)는 서브섹션 ID의 리스트를 클라이언트(25)로 전송(41)하는 것으로 응답하며, 그 이후에 클라이언트는 문서의 특정 서브섹션을 "예약 구독"할 수 있다. 예시적인 서버 응답은 다음과 같다.
<Sync>
<SubSection>
<Id>Part1</Id>
<Title>
이것은 HTML 포맷으로 트랜스코딩된 part1의 섹션 타이틀임
</Title>
</SubSection>
<SubSection>
<Id>Part2</Id>
<Title>
이것은 HTML 포맷으로 트랜스코딩된 part2의 섹션 타이틀임
</Title>
<SubSection>
<Id>Part3</Id>
<Title>
이것은 HTML 포맷으로 트랜스코딩된 part3의 섹션 타이틀임
</Title>
</SubSection>
<SubSection>
<Id>Part4</Id>
<Title>
이것은 HTML 포맷으로 트랜스코딩된 part4의 섹션 타이틀임
</Title>
<SubSection>
<Id>Part5</Id>
<Title>
이것은 HTML 포맷으로 트랜스코딩된 part5의 섹션 타이틀임
</Title>
</SubSection>
</Sync>
클라이언트(25)에 서브섹션 ID를 디스플레이한 후에, 클라이언트는 이어서 클라이언트가 예약 구독하고자 하는 서브섹션(65)을 지정하는 요청을 서버(33)로 전송한다. 서브섹션(65)은 이러한 요청의 이하의 예에서 서브섹션 ID에 의해 식별된다.
<Subscribe>
<SubSection>Partl</SubSection>
<SubSection>Part3</SubSection>
</Subscribe>
서버(33)는 그가 각자의 클라이언트(25)로 전송하는 일련의 서브섹션 추가, 변경 및 삭제를 결정한다. 삭제를 결정하면, 서버(33)는 특정의 서브섹션(65)이 문서(61)로부터 사라진다는 것을 안다. 변경을 결정하면, 서버(33)는 클라이언트가 이미 예약 구독하고 있는 서브섹션(65)에 대한 내용의 해쉬가 변경된다는 것을 안다. 추가를 결정하면, 서버(33)는 새로운 서브섹션(65)이 문서(61)에 도입되었거나 클라이언트(25)가 이전에 예약 구독하고 있었던 서브섹션을 예약 구독한다는 것을 안다. 서버(33)에 의한 응답(41)은 개개의 클라이언트 서브섹션에 대한 추가, 변경 및 삭제를 포함하게 된다. 클라이언트(25)로 전송(41)되는 변경은 클라이언트가 이 서브섹션을 예약 구독하고 있는 경우 서브섹션(65) 내용만을 포함한다. 그렇지 않은 경우, 클라이언트(25)는 그 변경, 어떤 예에서는, 기본적인 서브섹션 ID 변경을 통지받는다. 이하는 일반적인 서버(33) 응답의 일례이다.
<Sync>
<Change>
<Id>Part1</Id>
<Data>
이것은 문서의 part 1 내의 데이터임. 서브섹션 ID가 전송되지 않았음에 유의할 것. 클라이언트가 문서의 part 1을 예약 구독하고 있기 때문에, 서버는 이 데이터를 전송한다.
</Data>
</Change>
<Change>
<Id>Part3</Id>
<Data>
변경이 없었기 때문에 서버가 part 2를 전송하지 않았음에 유의할 것.
</Data>
</Change>
<Change>
<Id>Part4</Id>
<Title>
Part 4의 타이틀이 변경됨. 클라이언트가 part 4를 예약 구독하지 않지만 서버가 타이틀을 전송했음에 유의할 것. 이것은 클라이언트가 필요한 경우 part 4를 예약 구독하기 시작하기로 지능적으로 결정할 수 있게 해준다.
</Title>
</Change>
<Delete>
<Id>Part5</Id>
</Delete>
<Add>
<Id>Part6</Id>
<Title>
새로운 서브섹션(part 6)이 문서에 도입되었다. 클라이언트는 차후의 동기화에서 그것을 예약 구독하기로 결정할 수 있다.
</Title>
</Add>
</Sync>
유의할 점은 각각의 서브섹션(65)이 원본 서브섹션 자체가 아니라 서브섹션의 트랜스코딩된 보기를 포함한다는 것이다. 이것은 서버(33)가 제공된 서브섹션 내용을 장치의 특정의 제약에 맞게 조정할 수 있게 해준다(예를 들어, 장치는 기본적인 HTML을 보는 것만을 지원하고 한번에 하나의 서브섹션만을 저장할 수 있다).
범용 컴퓨팅 장치
도 5는 컴퓨터(130) 형태의 범용 컴퓨팅 장치의 일례를 나타낸 것이다. 본 발명의 일 실시예에서, 컴퓨터(130) 등의 컴퓨터는 본 명세서에 예시되고 설명된 다른 도면들에서 사용하기에 적합하다. 일례에서, 상기한 클라이언트 컴퓨터 또는 장치가 컴퓨터(130)에 의해 구현될 수 있다. 컴퓨터(130)는 그에 부가하여 하나 이상의 프로세서 또는 처리 장치(132) 및 시스템 메모리(134)를 갖는다. 예시된 실시예에서, 시스템 버스(136)는 시스템 메모리(134)를 비롯한 각종 시스템 컴포넌트들을 프로세서(132)에 연결시킨다. 이 버스(136)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, AGP(accelerated graphics port) 및 각종 버스 아키텍처 중 임의의 것을 이용하는 프로세서 또는 로컬 버스를 비롯한 임의의 몇몇 유형의 버스 구조 중 하나 이상을 나타낸다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(130)는 통상적으로 적어도 어떤 형태의 컴퓨터 판독가능 매체를 갖는다. 컴퓨터(130)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘다를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 일례에서, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(130)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함한다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 당업자라면 "피변조 데이터 신호"에 익숙하며, 이는 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 말한다. 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체가 통신 매체의 예이다. 상술된 매체들 중 임의의 것의 조합도 역시 컴퓨터 판독가능 매체의 영역 안에 포함된다.
시스템 메모리(134)는 이동식 및/또는 비이동식, 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 예시된 실시예에서, 시스템 메모리(134)는 판독 전용 메모리(ROM)(138) 및 랜덤 액세스 메모리(RAM)(140)를 포함한다. 시동 중과 같은 때에, 컴퓨터(130) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(142)은 통상적으로 ROM(138)에 저장되어 있다. RAM(140)은 통상적으로 처리 장치(132)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 5는 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모 듈(148) 및 프로그램 데이터(150)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(130)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 일례로서, 도 5는 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(154)를 나타내고 있다. 도 5는 또한 이동식·비휘발성 자기 디스크(158)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(156), 및 CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(162)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(160)를 도시하고 있다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(154), 자기 디스크 드라이브(156) 및 광 디스크 드라이브(160)는 통상적으로 인터페이스(166)와 같은 비휘발성 메모리 인터페이스에 의해 시스템 버스(136)에 접속된다.
위에서 설명되고 도 5에 도시된 드라이브들 또는 기타 대용량 저장 장치 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(130)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 5에서, 예를 들어, 하드 디스크 드라이브(154)는 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174), 및 프로그램 데이터(176)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모듈(148), 및 프로그램 데이터(150)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해, 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174) 및 프로그램 데이터(176)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다.
사용자는 키보드(180) 및 포인팅 장치(182)(예를 들어, 마우스, 트랙볼(trackball), 펜 또는 터치 패드) 등의 입력 장치 또는 사용자 인터페이스 선택 장치를 통해 명령 및 정보를 컴퓨터(130)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 시스템 버스(136)에 결합된 사용자 입력 인터페이스(184)를 통해 처리 장치(132)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(188) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(136)에 접속된다. 모니터(188) 외에, 컴퓨터는 종종 프린터 및 스피커 등의 기타 주변 출력 장치(도시 생략)를 포함하고, 이들은 출력 주변장치 인터페이스(도시 생략)를 통해 접속될 수 있다.
컴퓨터(130)는 원격 컴퓨터(194)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(194)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(130)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 5에 도시된 논리적 접속으로는 LAN(196) 및 WAN(198)이 있지만, 기타 네트워크를 포함할 수도 있다. LAN(196) 및/또는 WAN(198)은 유선 네트워크, 무선 네트워크, 이들의 조합, 기타 등등일 수 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 글로벌 컴퓨터 네트워크(예를 들어, 인터넷)에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(130)는 네트워크 인터페이스 또는 어댑터(186)를 통해 LAN(196)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(130)는 통상적으로 인터넷과 같은 WAN(198)을 통해 통신을 설정하기 위한 모뎀(178) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(178)은 사용자 입력 인터페이스(1684 또는 기타 적절한 메커니즘을 통해 시스템 버스(136)에 접속된다. 네트워크화된 환경에서, 컴퓨터(130) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치(도시 생략)에 저장될 수 있다. 예로서, 도 5는 원격 애플리케이션 프로그램(192)이 메모리 장치 상에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
일반적으로, 컴퓨터(130)의 데이터 프로세서들은 서로 다른 때에 컴퓨터의 여러가지 컴퓨터 판독가능 저장 매체에 저장되는 명령어에 의해 프로그램된다. 프로그램 및 운영 체제는 일반적으로, 일례에서, 플로피 디스크 또는 CD-ROM을 통해 배포된다. 그로부터, 이들은 컴퓨터의 2차 메모리에 설치 또는 로드된다. 실행 시에, 이들은 적어도 부분적으로 컴퓨터의 1차 전자 메모리에 로드된다. 본 명세 서에 기술된 본 발명은, 이러한 매체가 마이크로프로세서 또는 기타 데이터 프로세서와 관련하여 이하에 기술되는 동작들을 구현하는 명령어 또는 프로그램을 포함하고 있는 경우, 이들 및 기타 여러가지 유형의 컴퓨터 판독가능 저장 매체를 포함한다.
설명의 목적상, 운영 체제 등의 프로그램 및 기타 실행가능 프로그램 컴포넌트가 본 명세서에서 개별 블록으로 도시되어 있다. 그렇지만, 이러한 프로그램 및 컴포넌트가 다양한 때에 컴퓨터의 서로 다른 저장 컴포넌트에 존재하고 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 잘 알 것이다.
컴퓨터(130)를 포함하는 예시적인 컴퓨팅 시스템 환경과 관련하여 기술되어 있지만, 본 발명은 수많은 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 이 컴퓨팅 시스템 환경은 본 발명의 용도 또는 기능성의 범위에 관한 어떤 제한도 암시하려는 것이 아니다. 게다가, 컴퓨팅 시스템 환경이 예시적인 운영 환경에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 이동 전화, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
동작을 설명하면, 서버(33)로서 기능하는 컴퓨터(130)는 문서를 다수의 클라이언트들과 동기화시키는 상기한 것과 같은 방법을 실행한다. 컴퓨터(130) 또는 그의 컴포넌트들은 하나 이상의 클라이언트가 데이터를 수신하고자 하는 포맷에 관한 명령어를 수신한다. 컴퓨터(130) 또는 그의 컴포넌트들은 원본 문서의 서브섹션들을 정의하며, 이 원본 문서는 클라이언트 중 하나 이상이 아마도 관심을 가질 수 있으며 이 서브섹션들은 원본 문서 내에서의 의미 변환점(semantic break)에 대응한다. 컴퓨터(130) 또는 그의 컴포넌트들은 서브섹션들 각각을 식별해주는 서브섹션 ID를 발생한다. 컴퓨터(130) 또는 그의 컴포넌트들은 서브섹션 ID의 리스트를 하나 이상의 클라이언트들로 전송한다. 컴퓨터(130) 또는 그의 컴포넌트들은 하나 이상의 클라이언트들 중 적어도 하나로부터 서브섹션들 중 하나 이상을 예약 구독하기 위한 요청을 수신한다. 컴퓨터(130) 또는 그의 컴포넌트들은 이 요청에 응답하여, 하나 이상의 클라이언트들이 예약 구독하고자 하는 원본 문서의 서브섹션들 중 하나 이상을 각자의 하나 이상의 클라이언트들이 데이터를 수신하고자 하는 포맷으로 트랜스코딩(transcode)한다. 컴퓨터(130) 또는 그의 컴포넌트들은 그 각자의 예약 구독 요청에 따라 트랜스코딩된 예약 구독된 서브섹션을 하나 이상의 클라이언트들로 전송한다.
당업자라면, 달리 언급하지 않는 한, 본 명세서에 예시되고 기술된 방법들의 실행 또는 수행 순서가 필수적인 것이 아니라는 것을 잘 알 것이다. 즉, 발명자라면, 달리 언급하지 않는 한, 방법의 요소들이 임의의 순서로 실행될 수 있고 또 이 방법이 본 명세서에 개시된 것보다 많거나 더 적은 요소를 포함할 수 있다는 것을 알고 있다.
본 발명 또는 그의 실시예의 요소들을 소개할 때, 관형사, "한", "어떤", "그" 및 "상기"는 그 요소들이 하나 이상 있다는 것을 의미하기 위한 것이다. 용어 "구비하는", "포함하는" 및 "갖는"은 포함적(inclusive)임을 나타내기 위한 것이며, 열거된 요소 이외에 부가적인 요소가 있을 수 있음을 의미한다.
이상을 살펴보면, 본 발명의 몇가지 목적이 달성되고 다른 유익한 결과가 성취됨을 알 수 있다.
본 발명의 범위를 벗어나지 않고서 상기 제품 및 방법에 여러가지 변경이 행해질 수 있기 때문에, 상기 설명에 포함되고 첨부 도면에 도시된 모든 내용이 제한적인 의미가 아니라 예시적인 것으로서 해석되어야만 한다.

Claims (20)

  1. 다수의 클라이언트와 문서를 동기화시키는 방법으로서,
    하나 이상의 클라이언트로부터 상기 하나 이상의 클라이언트 각각이 데이터를 수신하는 포맷에 대한 명령어를 수신하는 단계;
    원본 문서의 서브섹션(subsections)을 정의하는 단계 - 상기 서브섹션은 상기 원본 문서 내의 의미 변환점(semantic breaks)에 대응함 - ;
    상기 서브섹션의 각각을 식별하는 서브섹션 ID를 생성하는 단계;
    상기 하나 이상의 클라이언트로 상기 서브섹션 ID의 리스트를 송신하는 단계;
    상기 하나 이상의 클라이언트 중 적어도 하나로부터 상기 서브섹션 중 하나 이상을 예약 구독(subscribe)하기 위한 요청을 수신하는 단계;
    상기 요청에 응답하여, 상기 하나 이상의 클라이언트 중 상기 적어도 하나가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 상기 각각의 클라이언트가 데이터를 수신하는 상기 포맷으로 트랜스코딩하는(transcode) 단계;
    상기 클라이언트의 상기 각각의 예약 구독 요청에 따라 상기 트랜스코딩되고 예약 구독된 서브섹션을 상기 하나 이상의 클라이언트 중 상기 적어도 하나로 송신하는 단계;
    상기 예약 구독하는 클라이언트 중 하나로부터 상기 원본 문서의 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작(operation)을 수신하는 단계;
    하나 이상의 클라이언트가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 상기 원본 문서의 내용을 나타내는 숫자값으로 해싱하는 단계;
    상기 원본 문서의 상기 수정된 서브섹션을 상기 적어도 하나의 수정된 서브섹션의 내용을 나타내는 숫자값으로 해싱하는 단계;
    상기 원본 문서의 내용을 나타내는 상기 숫자값을 상기 수정된 서브섹션의 내용을 나타내는 상기 숫자값과 비교하는 단계; 및
    상기 비교하는 단계의 함수(function)로서 상기 예약 구독된 서브섹션을 수정하는데 사용하기 위해 상기 서브섹션을 예약 구독하는 상기 클라이언트에게 상기 적어도 하나의 동작을 제공하는 단계
    를 포함하는,
    다수의 클라이언트와 문서를 동기화시키는 방법.
  2. 제1항에 있어서,
    상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 해싱하는 상기 단계 및 상기 원본 문서의 상기 수정된 서브섹션을 해싱하는 상기 단계 이전에 상기 하나 이상의 서브섹션의 포맷팅 속성(formatting attributes)을 제거하는 단계
    를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  3. 제1항에 있어서,
    상기 예약 구독하는 클라이언트 중 하나로부터 적어도 하나의 동작을 수신하는 단계는,
    상기 서브섹션의 내용을 수정하는 적어도 하나의 동작을 수신하는 단계, 상기 서브섹션에 내용을 추가하는 적어도 하나의 동작을 수신하는 단계, 및 상기 서브섹션으로부터 내용을 제거하는 적어도 하나의 동작을 수신하는 단계 중 적어도 하나를 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  4. 제3항에 있어서,
    상기 적어도 하나의 동작이 서브섹션에 내용을 추가하는 경우, 모든 클라이언트에게 상기 서브섹션 ID의 업데이트된 리스트를 송신하는 단계; 및
    상기 적어도 하나의 동작이 상기 서브섹션의 내용을 수정 또는 삭제하는 경우, 상기 예약 구독하는 클라이언트 중 하나로부터 상기 적어도 하나의 동작을 예약 구독하는 클라이언트로 송신하는 단계
    를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  5. 제1항에 있어서,
    상기 예약 구독하는 클라이언트 중 다른 하나로부터 상기 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작을 수신하는 단계; 및
    동일한 예약 구독된 서브섹션을 수정하기 위해 상기 예약 구독하는 클라이언트 중 상기 하나로부터 수신된 상기 적어도 하나의 동작과 상기 예약 구독하는 클라이언트 중 상기 다른 하나로부터 수신된 상기 적어도 하나의 동작 간의 임의의 충돌(conflict)을 해결하는 단계
    를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  6. 제5항에 있어서,
    상기 임의의 충돌을 해결하는 단계는,
    수정 허가 계층 구조(modification authority hierarchy)를 적용하여, 상기 계층구조에서의 각각의 예약 구독하는 클라이언트의 위치에 기초하여 상기 예약 구독하는 클라이언트 중 상기 하나 또는 상기 예약 구독하는 클라이언트 중 상기 다른 하나로부터의 상기 적어도 하나의 동작을 적용할지를 판정하는 단계를 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  7. 제5항에 있어서,
    상기 임의의 충돌을 해결하는 단계는,
    상기 적어도 하나의 동작 각각이 상기 예약 구독하는 클라이언트에 의해 개시된 시간에 기초하여 시간 요건(temporal requirement)을 만족시키는 상기 적어도 하나의 동작을 이용하는 단계를 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  8. 제1항에 있어서,
    상기 원본 문서의 상기 서브섹션을 정의하는 단계는,
    상기 문서 내에서의 논리 변환점(logical breaks)을 식별하는 상기 문서와 연관된 목차에 기초하여 상기 문서를 상기 서브섹션으로 분할하는 단계를 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  9. 제8항에 있어서,
    상기 원본 문서의 상기 서브섹션을 정의하는 단계는,
    상기 문서의 본래 구조(inherent structure)에 기초하여 상기 목차를 생성하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  10. 제8항에 있어서,
    상기 원본 문서의 상기 서브섹션을 정의하는 단계는,
    클라이언트-정의 목차(client-defined table of contents)를 이용하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  11. 제1항에 있어서,
    상기 서브섹션의 각각을 식별하는 서브섹션 ID를 생성하는 단계는,
    각각의 서브섹션 ID를 생성하기 위해 상기 서브섹션의 이름과 상기 문서 내에서의 상기 서브섹션의 위치를 서로 연계시키는 단계를 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  12. 제1항에 있어서,
    예약 구독하지 않는 클라이언트에게 서브섹션의 샘플 부분을 제공하여 상기 예약 구독하지 않는 클라이언트가 상기 서브섹션의 내용의 상기 샘플 부분을 검토하도록 하는 단계; 및
    상기 예약 구독하지 않는 클라이언트에게, 상기 샘플 부분을 제공한 상기 서브섹션을 예약 구독하거나 예약 구독하지 않을 것을 선택하게 하기 위한 선택 요소를 제공하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  13. 제12항에 있어서,
    상기 샘플 부분을 요청하도록 상기 예약 구독하지 않는 클라이언트에게 선택 요소를 제공하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  14. 제12항에 있어서,
    서브섹션의 샘플 부분을 제공하는 상기 단계는,
    네트워크 및 장치 중 적어도 하나의 성능에 기초하여 상기 예약 구독하지 않는 클라이언트의 상기 장치에 다운로드 및 저장을 위한 크기를 갖는 샘플 부분을 제공하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  15. 제1항에 있어서,
    상기 클라이언트가 상기 문서의 서브섹션을 예약 구독하거나 예약 구독하지 않을 수 있게 해주는 적어도 하나의 선택 요소를 사용자 인터페이스에 제공하는 단계를 더 포함하는, 다수의 클라이언트와 문서를 동기화시키는 방법.
  16. 네트워크를 통해 시스템과 연결된 다수의 클라이언트와 문서를 동기화시키는 시스템으로서,
    하나 이상의 상기 클라이언트로부터 상기 하나 이상의 클라이언트 각각이 상기 네트워크를 통해 서버로부터 데이터를 수신하는 포맷에 대한 명령어를 수신하기 위하여 상기 네트워크에 연결된 서버; 및
    원본 문서를 저장하기 위하여 상기 서버에 연결된 데이터베이스를 포함하며,
    상기 서버는,
    상기 데이터베이스에 저장된 상기 원본 문서의 서브섹션을 정의하고 - 상기 서브섹션은 상기 원본 문서 내의 의미 변환점에 대응함 - ;
    상기 서브섹션의 각각을 식별하는 서브섹션 ID를 생성하며;
    상기 네트워크를 통해 상기 하나 이상의 클라이언트 각각으로 상기 서브섹션 ID의 리스트를 송신하고;
    상기 네트워크를 통해 상기 하나 이상의 클라이언트 중 적어도 하나로부터 상기 서브섹션 중 하나 이상을 예약 구독하기 위한 요청을 수신하며;
    상기 수신된 요청에 응답하여, 상기 하나 이상의 클라이언트 중 상기 적어도 하나가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 트랜스코딩하고;
    상기 클라이언트의 상기 각각의 예약 구독 요청에 따라 상기 트랜스코딩되고 예약 구독된 서브섹션을 상기 하나 이상의 클라이언트 중 상기 적어도 하나로 송신하며;
    상기 예약 구독하는 클라이언트 중 하나로부터 상기 원본 문서의 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작을 수신하고;
    하나 이상의 클라이언트가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 상기 원본 문서의 내용을 나타내는 숫자값으로 해싱하며;
    상기 원본 문서의 상기 수정된 서브섹션을 상기 적어도 하나의 수정된 서브섹션의 내용을 나타내는 숫자값으로 해싱하고;
    상기 원본 문서의 내용을 나타내는 상기 숫자값을 상기 수정된 서브섹션의 내용을 나타내는 상기 숫자값과 비교하며;
    상기 비교의 함수로서 상기 예약 구독된 서브섹션을 수정하는데 사용하기 위해 상기 서브섹션을 예약 구독하는 상기 클라이언트에게 상기 적어도 하나의 동작을 제공하도록 더 구성된,
    다수의 클라이언트와 문서를 동기화시키는 시스템.
  17. 다수의 클라이언트와 문서를 동기화시키기 위한 컴퓨터-실행가능 명령어를 저장한 컴퓨터-판독가능 저장 매체로서, 상기 컴퓨터-실행가능 명령어는,
    하나 이상의 클라이언트로부터 상기 하나 이상의 클라이언트 각각이 데이터를 수신하는 포맷에 대한 명령어를 수신하는 단계;
    원본 문서의 서브섹션을 정의하는 단계 - 상기 서브섹션은 상기 원본 문서 내의 의미 변환점에 대응함 - ;
    상기 서브섹션의 각각을 식별하는 서브섹션 ID를 생성하는 단계;
    상기 하나 이상의 클라이언트로 상기 서브섹션 ID의 리스트를 송신하는 단계;
    상기 하나 이상의 클라이언트 중 적어도 하나로부터 상기 서브섹션 중 하나 이상을 예약 구독하기 위한 요청을 수신하는 단계;
    상기 요청에 응답하여, 상기 하나 이상의 클라이언트 중 상기 적어도 하나가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 상기 각각의 클라이언트가 데이터를 수신하는 상기 포맷으로 트랜스코딩하는 단계;
    상기 클라이언트의 상기 각각의 예약 구독 요청에 따라 상기 트랜스코딩되고 예약 구독된 서브섹션을 상기 하나 이상의 클라이언트 중 상기 적어도 하나로 송신하는 단계;
    상기 예약 구독하는 클라이언트 중 하나로부터 상기 원본 문서의 예약 구독된 서브섹션을 수정하기 위한 적어도 하나의 동작을 수신하는 단계;
    하나 이상의 클라이언트가 예약 구독하는 상기 원본 문서의 상기 서브섹션 중 상기 하나 이상을 상기 원본 문서의 내용을 나타내는 숫자값으로 해싱하는 단계;
    상기 원본 문서의 상기 수정된 서브섹션을 상기 적어도 하나의 수정된 서브섹션의 내용을 나타내는 숫자값으로 해싱하는 단계;
    상기 원본 문서의 내용을 나타내는 상기 숫자값을 상기 수정된 서브섹션의 내용을 나타내는 상기 숫자값과 비교하는 단계; 및
    상기 비교하는 단계의 함수로서 상기 예약 구독된 서브섹션을 수정하는데 사용하기 위해 상기 서브섹션을 예약 구독하는 상기 클라이언트에게 상기 적어도 하나의 동작을 제공하는 단계
    를 수행하는,
    다수의 클라이언트와 문서를 동기화시키기 위한 컴퓨터-실행가능 명령어를 저장한 컴퓨터-판독가능 저장 매체.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020077024567A 2005-05-25 2006-04-17 수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체 KR101238574B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/136,976 US7305420B2 (en) 2005-05-25 2005-05-25 Synchronizing modifiable documents with multiple clients using document subsections
US11/136,976 2005-05-25
PCT/US2006/014327 WO2006127178A2 (en) 2005-05-25 2006-04-17 Methods, systems, and computer-readable media for synchronizing modifiable documents with multiple clients

Publications (2)

Publication Number Publication Date
KR20080014747A KR20080014747A (ko) 2008-02-14
KR101238574B1 true KR101238574B1 (ko) 2013-02-28

Family

ID=37452539

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077024567A KR101238574B1 (ko) 2005-05-25 2006-04-17 수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체

Country Status (10)

Country Link
US (1) US7305420B2 (ko)
EP (1) EP1891549B1 (ko)
JP (1) JP2008542875A (ko)
KR (1) KR101238574B1 (ko)
CN (1) CN101167071B (ko)
BR (1) BRPI0609106B1 (ko)
MX (1) MX2007013358A (ko)
RU (1) RU2417425C2 (ko)
TW (1) TW200703027A (ko)
WO (1) WO2006127178A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018212486A1 (ko) * 2017-05-19 2018-11-22 주식회사 한글과컴퓨터 마크업 언어 기반 문서의 조합 글자 동기화 장치 및 그의 동작 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721200B2 (en) * 2005-04-21 2010-05-18 Omegablue, Inc. Automatic authoring and publishing system
US7721201B2 (en) * 2005-04-21 2010-05-18 Omegablue, Inc. Automatic authoring and publishing system
US7698635B2 (en) * 2005-04-21 2010-04-13 Omegablue, Inc. Automatic authoring and publishing system
US20060259521A1 (en) * 2005-05-16 2006-11-16 Anthony Armenta Interface for synchronization of documents between a host computer and a portable device
US7783993B2 (en) * 2005-09-23 2010-08-24 Palm, Inc. Content-based navigation and launching on mobile devices
US20070220048A1 (en) * 2006-03-20 2007-09-20 Yahoo! Inc. Limited and combined podcast subscriptions
US20070300067A1 (en) * 2006-06-03 2007-12-27 Roselyn, Llc Notice of Revocation System for Revocable or Modifiable Documents
US8131670B2 (en) * 2007-02-22 2012-03-06 Microsoft Corporation Techniques to cross-synchronize data
CN101110822B (zh) * 2007-07-06 2011-11-02 华为技术有限公司 基于网络配置协议的事件通知发送方法、系统及设备
US7930646B2 (en) * 2007-10-19 2011-04-19 Microsoft Corporation Dynamically updated virtual list view
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8639661B2 (en) * 2008-12-01 2014-01-28 Microsoft Corporation Supporting media content revert functionality across multiple devices
CN101753611B (zh) * 2008-12-16 2012-12-12 华为技术有限公司 一种取消同步的方法及装置
US20120317488A1 (en) * 2011-06-13 2012-12-13 Microsoft Corporation Techniques for adapting an interpretive run time application to multiple clients
US9983759B1 (en) * 2012-02-29 2018-05-29 Google Llc Method and system for sharing virtual collaboration objects
US8775682B1 (en) * 2012-05-08 2014-07-08 Google Inc. Data synchronization with eventual consistency
US10095672B2 (en) 2012-06-18 2018-10-09 Novaworks, LLC Method and apparatus for synchronizing financial reporting data
US10642928B2 (en) * 2013-06-03 2020-05-05 International Business Machines Corporation Annotation collision detection in a question and answer system
US9485306B2 (en) 2013-06-21 2016-11-01 Here Global B.V. Methods, apparatuses, and computer program products for facilitating a data interchange protocol
US9454348B2 (en) 2013-06-21 2016-09-27 Here Global B.V. Methods, apparatuses, and computer program products for facilitating a data interchange protocol modeling language
US20150142804A1 (en) * 2013-11-21 2015-05-21 Here Global B.V. Methods, apparatuses and computer program products for utilizing subtyping to support evolution of data types
US10091249B2 (en) * 2013-11-22 2018-10-02 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for synchronization of two databases in a lawful interception network by comparing checksum values
US9454620B2 (en) 2014-02-28 2016-09-27 Here Global B.V. Methods, apparatuses and computer program products for automated learning of data models
WO2016007144A1 (en) * 2014-07-08 2016-01-14 Hewlett-Packard Development Company, L.P. Composite document access
RU2609081C2 (ru) * 2015-06-29 2017-01-30 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты) и система (варианты) обработки документа в распределенной архитектуре
CN105227986A (zh) * 2015-09-24 2016-01-06 小米科技有限责任公司 同步处理方法及装置
CN107438084B (zh) * 2016-05-25 2020-12-22 北京京东尚科信息技术有限公司 多客户端数据同步方法和装置
US20200051030A1 (en) * 2018-08-10 2020-02-13 Nvidia Corporation Platform and method for collaborative generation of content
US10970457B2 (en) * 2017-11-22 2021-04-06 Citta LLC Collaboration mechanism
WO2021072383A1 (en) * 2019-10-10 2021-04-15 Autodesk, Inc. Document tracking through version hash linked graphs
CN111639482B (zh) * 2020-04-27 2022-11-22 平安普惠企业管理有限公司 文档修改方法、装置、电子设备及介质
KR102648501B1 (ko) * 2020-12-16 2024-03-19 한국전자통신연구원 네트워크 환경 동기화 장치 및 방법
CN113709250B (zh) * 2021-08-31 2023-09-15 中国电子科技集团公司第二十八研究所 一种基于订阅发送模式的跨域用户数据同步方法
CN114780504B (zh) * 2022-06-20 2022-09-02 中关村科学城城市大脑股份有限公司 web端交互管理方法、装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030172113A1 (en) 2002-03-05 2003-09-11 Cameron Brian A. Synchronization of documents between a server and small devices
US20040243921A1 (en) 2003-05-30 2004-12-02 Carr Steven Paul Methods and systems for synchronizing document elements
US6993476B1 (en) 1999-08-26 2006-01-31 International Business Machines Corporation System and method for incorporating semantic characteristics into the format-driven syntactic document transcoding framework

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261080A (en) * 1987-08-21 1993-11-09 Wang Laboratories, Inc. Matchmaker for assisting and executing the providing and conversion of data between objects in a data processing system storing data in typed objects having different data formats
JPH07160631A (ja) * 1993-12-09 1995-06-23 Fujitsu Ltd データ共同編集システム
JPH09209569A (ja) * 1996-02-02 1997-08-12 Fujitsu Ltd 作業調整システム
GB9604987D0 (en) * 1996-03-08 1996-05-08 Ibm Data management system and method for replicated data
US7047248B1 (en) * 1997-11-19 2006-05-16 International Business Machines Corporation Data processing system and method for archiving and accessing electronic messages
JP2000172602A (ja) * 1998-12-08 2000-06-23 Nec Corp クライアントサーバシステム、サーバ装置、データ名称変換方法及び記録媒体
JP4141556B2 (ja) * 1998-12-18 2008-08-27 株式会社日立製作所 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2001216230A (ja) * 2000-02-01 2001-08-10 Fuji Xerox Co Ltd ネットワークを利用した文書処理方法および装置
JP2002288153A (ja) * 2001-03-26 2002-10-04 Digital Communications:Kk アプリケーション非依存データ生成方法及び情報処理プログラム及びレイアウト情報処理システム。
WO2003054742A2 (en) * 2001-12-21 2003-07-03 American Airlines System and method for web to mainframe synchronization
US7200668B2 (en) * 2002-03-05 2007-04-03 Sun Microsystems, Inc. Document conversion with merging
WO2003107222A1 (en) * 2002-06-13 2003-12-24 Cerisent Corporation Parent-child query indexing for xml databases
JP2004030354A (ja) * 2002-06-27 2004-01-29 Inforware System Kk 情報提供システム
US7337239B2 (en) * 2002-11-19 2008-02-26 Microsoft Corporation Atomic message division
US7386590B2 (en) * 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
KR100491541B1 (ko) * 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993476B1 (en) 1999-08-26 2006-01-31 International Business Machines Corporation System and method for incorporating semantic characteristics into the format-driven syntactic document transcoding framework
US20030172113A1 (en) 2002-03-05 2003-09-11 Cameron Brian A. Synchronization of documents between a server and small devices
US20040243921A1 (en) 2003-05-30 2004-12-02 Carr Steven Paul Methods and systems for synchronizing document elements

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018212486A1 (ko) * 2017-05-19 2018-11-22 주식회사 한글과컴퓨터 마크업 언어 기반 문서의 조합 글자 동기화 장치 및 그의 동작 방법

Also Published As

Publication number Publication date
EP1891549A4 (en) 2011-06-22
KR20080014747A (ko) 2008-02-14
BRPI0609106A2 (pt) 2010-02-17
US7305420B2 (en) 2007-12-04
WO2006127178A2 (en) 2006-11-30
BRPI0609106B1 (pt) 2018-02-14
JP2008542875A (ja) 2008-11-27
EP1891549B1 (en) 2017-12-27
WO2006127178A3 (en) 2007-12-21
EP1891549A2 (en) 2008-02-27
MX2007013358A (es) 2008-01-11
CN101167071A (zh) 2008-04-23
TW200703027A (en) 2007-01-16
RU2417425C2 (ru) 2011-04-27
RU2007143551A (ru) 2009-05-27
US20060271603A1 (en) 2006-11-30
CN101167071B (zh) 2012-04-04

Similar Documents

Publication Publication Date Title
KR101238574B1 (ko) 수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체
US20170329751A1 (en) Clipboard augmentation with references
RU2500023C2 (ru) Синхронизация документа по протоколу, не использующему информацию о состоянии
JP4405812B2 (ja) 第1データ記憶部と第2データ記憶部との間で同期を取るための方法および装置
JP5646686B2 (ja) サーバ記憶モデルを利用したファイルパーティションの同期
US11921749B2 (en) Synchronization adapter for synchronizing application data
US20040122912A1 (en) Method and apparatus for automatic document generation based on annotation
KR20100133380A (ko) 컴퓨팅 환경 표현
US20020087556A1 (en) Method and system for synchonizing data
US20110208761A1 (en) Coordinating content from multiple data sources
US20080270453A1 (en) Keyword-based content management
JP2000181765A (ja) デ―タ記憶システムおよび操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 7