KR101812957B1 - 공동 편집 문서를 공유하는 방법 및 장치 - Google Patents

공동 편집 문서를 공유하는 방법 및 장치 Download PDF

Info

Publication number
KR101812957B1
KR101812957B1 KR1020160059781A KR20160059781A KR101812957B1 KR 101812957 B1 KR101812957 B1 KR 101812957B1 KR 1020160059781 A KR1020160059781 A KR 1020160059781A KR 20160059781 A KR20160059781 A KR 20160059781A KR 101812957 B1 KR101812957 B1 KR 101812957B1
Authority
KR
South Korea
Prior art keywords
command
edit
list
editing
commands
Prior art date
Application number
KR1020160059781A
Other languages
English (en)
Other versions
KR20170129338A (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 주식회사 인프라웨어
Priority to KR1020160059781A priority Critical patent/KR101812957B1/ko
Publication of KR20170129338A publication Critical patent/KR20170129338A/ko
Application granted granted Critical
Publication of KR101812957B1 publication Critical patent/KR101812957B1/ko

Links

Images

Classifications

    • G06F17/24
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • G06F17/21
    • G06F17/30011
    • G06F17/3007
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing

Abstract

본 개시의 일 실시예에 따라 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계; 명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계; 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계; 및 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계를 포함할 수 있다.

Description

공동 편집 문서를 공유하는 방법 및 장치{METHOD AND APPARATUS FOR SHARING A COLLABORATIVE EDITING DOCUMENT}
본 개시는 공동 편집 문서를 공유하는 방법 및 장치에 관한 것으로서, 보다 상세하게는 공동으로 편집하는 문서를 효율적으로 공유할 수 있는 공동 편집 문서를 공유하는 방법 및 장치에 관한 것이다.
최근 통신 기술이 발달함에 따라, 인터넷을 통해 다양한 서비스가 제공되고 있다. 특히, 인터넷을 통해 대용량의 파일들이 이동되고 대량의 데이터가 송수신된다. 이에 따라, 인터넷을 통해 언제 어디서든지 다양한 파일을 공유하는 기술도 발달하게 되었다.
이와 같이 다양한 통신 기술(예를 들어, 인터넷)을 기초로 단말기를 사용하는 사용자들이 가상의 저장소에 데이터 또는 파일을 저장하고 가상의 저장소를 통해 데이터 또는 파일을 주고 받고 공유도 할 수 있는 서비스를 클라우드(cloud)서비스라고 한다. 클라우드 서비스를 통해 사용자는 데이터 또는 파일을 자유롭게 사용할 수 있다. 구체적으로, 클라우드 서비스를 통해 사용자는 시간과 공간의 제약을 받지 않고 데이터 또는 파일을 다운로드(download)또는 업로드(upload)할 수 있고, 데이터 또는 파일을 다른 사용자들과 공유할 수도 있다.
이러한 클라우드 서비스는 데이터 또는 파일을 저장하고 공유하는 저장소인 공유 서버를 기반으로 제공된다. 구체적으로, 사용자들은 공유 서버를 통해 문서 파일을 저장 및 공유하고, 사용자들은 각자의 단말기를 통해 문서 파일을 편집할 수 있다.
다만, 사용자들이 각자의 단말기에서 공유하는 공유 문서를 편집하는 경우, 공유 서버는 사용자들의 단말기 각각에서 입력하는 편집 내용을 수신하여, 편집 내용을 공유 문서에 반영하고 공유 문서를 갱신하기 위한 엔진(engine)을 포함한다. 이에 따라, 공유 문서를 공유하는 단말기의 수가 증가함에 따라 공유 서버는 공유 문서를 편집하는 내용을 반영하기 위해 요구되는 엔진을 더 많이 필요로 하고, 많은 엔진을 사용함에 따라 공유 서버가 처리해야 할 데이터의 부하도 증가한다. 즉, 공유 문서를 공유하는 단말기의 수가 증가함에 따라 공유 서버에서 공유 문서에 편집 내용을 반영하기 위한 부하가 증가되고 공유 서버의 성능도 저하되고 클라우드 서비스의 질이 저하되는 문제점이 발생할 수 있다.
따라서, 공유 및 편집을 위한 공유 문서를 제공하는 서버의 부하를 감소시키고 효율적으로 공유 문서를 공유하고 편집하기 위해 복수의 서버를 이용하여 공유 문서를 공유하는 방법을 제공할 필요성이 증대되었다.
[관련기술문헌]
문서협업 방법(한국공개특허 제 10-2014-0028040 호)
본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 본 개시가 해결하고자 하는 과제는 적은 리소스를 사용하여 다수의 클라이언트가 편집할 수 있도록 공유되는 문서(이하, 공동 편집 문서라 한다.)를 신속하게 편집할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공하는 것이다.
본 개시가 해결하고자 하는 다른 과제는 공동 편집 문서를 편집하는 중 새로운 클라이언트가 공동 편집 문서를 공유하는 경우, 추가된 새로운 클라이언트에 갱신된 공동 편집 문서를 신속하게 제공할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공하는 것이다.
본 개시의 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 바와 같은 과제를 해결하기 위하여 본 개시의 일 실시예에 따라 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계, 명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계 및 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계를 포함할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 둘 이상의 편집 명령어가 제 1 및 제 2 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어--상기 제 1 편집 명령어는 상기 제 2 편집 명령어와 상이함-에 따른 편집의 실행 취소(Undo)인 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고, 상기 축약 명령어 리스트를 생성하는 단계는 상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 둘 이상의 편집 명령어가 제 1, 2 및 3 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 실행 취소이고, 그리고 제 2 편집 명령어 수신 이후에 수신된 상기 제 3 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 재실행(Redo)인 경우, 상기 제 2 및 3 편집 명령어가 축약이 가능하다고 판단하고, 상기 축약 명령어 리스트를 생성하는 단계는 상기 제 2 편집 명령어 및 상기 제 3 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 둘 이상의 편집 명령어가 제 1 및 제 2 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어-상기 제 1 편집 명령어는 상기 제 2 편집 명령어와 상이함-에 따른 편집의 삭제인 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고, 상기 축약 명령어 리스트를 생성하는 단계는 상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 둘 이상의 편집 명령어가 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하는 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고, 상기 축약 명령어 리스트를 생성하는 단계는 상기 둘 이상의 편집 명령어 중 상기 사전 설정된 작업의 시작에 대한 정보를 포함하는 적어도 하나의 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성할 수 있다.
대안적으로, 상기 사전 설정된 작업은 멀티미디어 파일의 삽입이고, 상기 시작에 대한 정보는 적어도 상기 멀티미디어 파일의 문서 내의 삽입 위치를 포함하고, 상기 완료에 대한 정보는 적어도 상기 멀티미디어 파일의 데이터를 포함할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 수신된 상기 둘 이상의 편집 명령어 중 각각의 클라이언트로부터 수신된 편집 명령어 각각에 대해서 축약 가능 여부를 판단할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 명령어 저장 서버가 상기 편집 명령어를 상기 적어도 하나의 클라이언트로부터 수신한 시간에 기초하여 사전 결정된 시간 범위 안에 수신된 상기 둘 이상의 편집 명령어에 대해서 축약 가능 여부를 판단할 수 있다.
대안적으로, 상기 축약이 가능한지 여부를 판단하는 단계는 상기 명령어 리스트의 순서에 기초하여 사전 결정된 스택 범위 안에 저장된 상기 둘 이상의 편집 명령어에 대해서 축약 가능 여부를 판단할 수 있다.
대안적으로, 엔진-풀 서버에서 상기 명령어 저장 서버로부터 상기 명령어 리스트 또는 상기 축약 명령어 리스트를 수신하는 단계 및 상기 명령어 리스트 또는 상기 축약 명령어 리스트 중 적어도 하나에 부분적으로 기초하여, 상기 공동 편집 문서와 관련되는 시드 문서 파일을 갱신한 갱신 시드 문서 파일을 생성하는 단계를 더 포함할 수 있다.
대안적으로, 상기 클라이언트 그룹에 포함되지 않는 추가 클라이언트가 연결된 경우, 상기 엔진-풀 서버에서 상기 추가 클라이언트에게 상기 갱신 시드 문서 파일을 송신하는 단계 및 상기 명령어 전달 서버에서 상기 추가 클라이언트에게 상기 갱신 시드 문서 파일이 생성된 이후 저장된 추가 편집 명령어 중 일부로 구성된 상기 축약 명령어 리스트 또는 상기 명령어 리스트를 송신하는 단계를 더 포함할 수 있다.
본 개시의 다른 일 실시예에 따른 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계 명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계 상기 명령어 저장 서버에서 엔진-풀 서버로 상기 명령어 리스트를 송신하는 단계 상기 엔진-풀 서버에서 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계 및 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 엔진-풀 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계를 포함할 수 있다.
본 개시의 다른 일 실시예에 따른 하나 이상의 프로세서에 의해 실행되는 복수의 명령들을 포함하는, 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램이 개시된다. 상기 컴퓨터 프로그램은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하도록 하기 위한 명령 명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하도록 하기 위한 명령 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하도록 하기 위한 명령 및 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하도록 하기 위한 명령을 포함할 수 있다.
본 개시의 다른 일 실시예에 따른 공동 편집 문서를 공유하는 시스템이 개시된다. 상기 시스템은 명령어 전달 서버 및 명령어 저장 서버를 포함하고, 상기 명령어 전달 서버는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하고, 그리고 상기 명령어 저장 서버는 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하고, 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하고, 그리고 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성할 수 있다.
본 개시는 적은 리소스를 사용하여 다수의 클라이언트가 편집할 수 있도록 공유되는 문서를 신속하게 편집할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공할 수 있는 효과가 있다.
본 개시는 공동 편집 문서를 편집하는 중 새로운 클라이언트가 공동 편집 문서를 공유하는 경우, 추가된 새로운 클라이언트에 갱신된 공동 편집 문서를 신속하게 제공할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공할 수 있는 효과가 있다.
본 개시에 따른 효과는 이상에서 예시된 내용에 의해 제한되지 않으며, 더욱 다양한 효과들이 본 명세서 내에 포함되어 있다.
도 1은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치와 공유 서버, 바로가기 파일 서버 및 클라이언트 사이의 관계를 도시한 것이다.
도 2는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 따라 공동 편집 문서 파일을 공유하기 위한 절차를 도시한 것이다.
도 3은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 5는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 6a 및 도 6b는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 예시적인 출력 화면을 도시 한 것이다.
도 7은 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 8a 및 도 8b는 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 9는 본 개시의 일 실시예에 따른 명령어 리스트의 개략적인 구성을 도시한 것이다.
도 10은 본 개시의 다른 일 실시예에 따른 명령어 리스트의 개략적인 구성을 도시한 것이다.
도 11a, 11b 및 11c는 본 개시에서 각각의 실시예에 따라 생성되는 명령어 리스트와 축약 명령어 리스트의 예시적인 구성을 도시한 것이다.
도 12는 본 개시의 일 실시예에 따른 축약 명령어 리스트를 생성하는 방법을 도시하는 플로우 차트이다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 개시의 개시가 완전하도록 하며, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다.
본 개시의 실시예를 설명하기 위한 도면에 개시된 형상, 크기, 비율, 각도, 개수 등은 예시적인 것이므로 본 개시가 도시된 사항에 한정되는 것은 아니다. 또한, 본 개시를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략한다. 본 명세서 상에서 언급된 '포함한다', '갖는다', '이루어진다' 등이 사용되는 경우 '~만'이 사용되지 않는 이상 다른 부분이 추가될 수 있다. 구성요 소를 단수로 표현한 경우에 특별히 명시적인 기재 사항이 없는 한 복수를 포함하는 경우를 포함한다.
구성요소를 해석함에 있어서, 별도의 명시적 기재가 없더라도 오차 범위를 포함하는 것으로 해석한다.
비록 제1, 제2 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않는다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 개시의 기술적 사상 내에서 제2 구성요소일 수도 있다.
별도로 명시하지 않는 한 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 개시의 여러 실시예들의 각각 특징들이 부분적으로 또는 전체적으로 서로 결합 또는 조합 가능하며, 당업자가 충분히 이해할 수 있듯이 기술적으로 다양한 연동 및 구동이 가능하며, 각 실시예들이 서로에 대하여 독립적으로 실시 가능할 수도 있고 연관 관계로 함께 실시 가능할 수도 있다.
이하, 본 명세서에서 사용되는 용어에 대해 정의한다.
본 명세서에서 문서 편집 단말기란, 전자 문서 파일을 편집할 수 있는 단말기로서, 클라우드 서버와 같은 공유 서버에 저장된 전자 문서 파일을 공유 하면서 전자 문서 파일의 내용 및 설정 등을 편집할 수 있는 단말기를 의미한다.
본 명세서에서 공동 편집 문서란, 다수의 문서 편집 단말기가 공유하는 협업에 의해 작성되는 문서로서, 문서 편집 단말기가 공유하는 전자 문서를 의미한다. 공동 편집 문서는 문서 편집 단말기들이 전자 문서를 공유하기 위해 접속한 클라우드 서버에 저장된 전자 문서를 의미할 수 있다.
본 명세서에서 공동 편집 문서 파일이란, 다수의 문서 편집 단말기를 통해 공유되고 편집 가능한 공동 편집 문서 자체 또는 공동 문서에 접근할 수 있는 경로(path)를 의미한다. 예를 들어, 공동 편집 문서 파일은 클라우드 서버와 같은 공유 서버로부터 전송되어 공동 문서 공유 장치에 일시적으로 저장되어 있는 공동 문서 자체이거나 문서 편집 단말기가 공동 문서에 접근할 수 있는 링크(link)일 수 있다.
본 명세서에서 시드 문서 파일이란, 클라이언트가 공동으로 편집하고자 하는 문서 파일(이하, 공동 편집 문서 파일)에 대응하는 편집용 파일로서, 편집 명령어가 적용되기 이전에 클라이언트가 공유하는 편집용 문서 파일을 의미한다. 이러한 시드 문서 파일은 공동 편집 문서를 공유하는 장치에 저장되어 있다가 클라이언트가 문서 파일의 공유를 요청하는 경우 클라이언트로 송신될 수 있다.
본 명세서에서 편집 명령어란, 클라이언트에서 공유하는 문서를 편집하는 명령어로서, 공동 편집 문서에 입력되는 다양한 명령어를 포함한다. 예를 들어, 편집 명령어는 공동 편집 문서의 적어도 일부 내용을 삭제하는 삭제 명령어, 추가하는 명령어, 문서의 서식 등을 변경하는 명령어 및 그림과 같은 객체를 삽입하는 삽입 명령어 등을 포함할 수 있다. 임의의 클라이언트에서 입력한 편집 명령어는 공동 편집 문서를 공유하는 장치로 송신된 후 공동 편집 문서를 공유하는 장치에 연결된 클라이언트로 송신될 수 있다.
본 명세서에서 명령어 리스트란, 편집 명령어를 수신하여 미리 정해진 규칙에 따라 수신한 편집 명령어를 저장한 리스트이다. 예를 들어, 명령어 리스트는 미리 설정된 조건이 충족되기 전까지 수신된 편집 명령어를 저장한 리스트일 수 있다.
본 명세서에서 추가 클라이언트란, 문서 파일에 대한 편집 명령어가 공동 편집 문서를 공유하는 장치에 적어도 하나 입력된 이후, 공동 편집 문서를 공유하는 장치에 연결된 클라이언트를 의미한다. 즉, 추가 클라이언트는 이미 공동 편집 문서를 공유하는 장치에 연결된 클라이언트가 시드 문서 파일을 편집한 이후 공동 편집 문서를 공유하는 장치에 연결된 클라이언트를 의미한다. 다시 말하면, 추가 클라이언트는 공동 편집 문서를 공유하는 장치에 연결된 클라이언트들을 포함하는 클라이언트 그룹에 포함되지 않는 클라이언트를 의미할 수 있다.
도 1은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치와 공유 서버, 바로가기 파일 서버 및 클라이언트 사이의 관계를 도시한 것이다.
도 1을 참조하면, 공동 편집 문서를 공유하는 장치(이하, 공동 편집 문서 공유 장치)(100)는 시드 문서 서버(110), 명령어 전달 서버(120), 명령어 저장 서버(130)및 엔진-풀(engine-pool)서버(140)를 포함한다. 공동 편집 문서 공유 장치(100)는 적어도 하나의 클라이언트(900)및 추가 클라이언트(910)와 통신 가능하도록 연결될 수 있다. 또한, 공동 편집 문서 공유 장치(100)는 공유 서버(1000)및 바로가기 파일 서버(1200)와도 통신 가능하도록 연결될 수 있다. 공동 편집 문서 공유 장치(100)에 연결된 적어도 하나의 클라이언트들은, 클라이언트 그룹(900)을 구성할 수 있다. 클라이언트 그룹(900)은 공동 편집 문서와 연관된 적어도 두 개의 클라이언트를 포함하는 그룹을 의미할 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 클라이언트 그룹(900)에 속한 클라이언트들이 클라이언트 그룹(900)에서 탈퇴하여 하나의 클라이언트만이 클라이언트 그룹(900)에 속하는 경우에도, 상기 하나의 클라이언트 또한 클라이언트 그룹(900)으로 지칭될 수 있다. 클라이언트 그룹(900)이 생성되고 하나의 클라이언트만이 지정된 경우에도, 상기 하나의 클라이언트 또한 클라이언트 그룹(900)으로 지칭될 수 있다. 클라이언트 그룹(900)은 동일한 공동 편집 문서에 액세스 가능한 클라이언트들 전체 또는 일부로 구성될 수 있다. 클라이언트 그룹(900)이 공동으로 편집하는 문서는 하나의 문서이거나 또는 복수의 문서일 수 있다. 클라이언트 그룹(900)이 공동으로 편집하는 문서가 복수인 경우, 복수의 문서들은 동일한 타입(예를 들어, 스프레드 시트 문서)의 조합이거나, 상이한 타입의 조합(예를 들어, 스프레드 시트 문서와 텍스트 문서의 조합)일 수 있다. 하나의 클라이언트 그룹(900)에 속한 클라이언트는 동시에 다른 클라이언트 그룹에 속할 수도 있다. 하나의 공동 편집 문서에 대하여 하나 이상의 클라이언트 그룹(900)이 생성될 수 있다. 클라이언트 그룹(900)은 임의의 이벤트를 공유하거나, 임의의 사유로 인하여 편집 명령어들을 공유할 필요성이 있는 클라이언트들을 포함할 수 있다. 이하 문서에서, "적어도 하나의 클라이언트"는 클라이언트 그룹(900)에 속한 하나 이상의 클라이언트를 의미하거나, 또는 클라이언트 그룹(900)전체의 집합적인 동작을 서술하기 위해 사용될 수 있다.
시드 문서 서버(110)는 시드 문서 파일 및 갱신 시드 문서 파일을 저장하고, 엔진-풀 서버(140)에 시드 문서 파일을 제공할 수 있다. 또한, 시드 문서 서버(110)는 공유 서버(1000)에 업로드된 문서 파일을 기초로 생성된 시드(seed)문서 파일을 저장하고, 상기 시드 문서 파일을 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트에게 전송할 수 있다.
명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 편집 명령어를 수신하여 다시 적어도 하나의 클라이언트(900)로 편집 명령어를 송신한다. 명령어 전달 서버(120)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹(900)에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서와 관련되는 적어도 두 개의 편집 명령어들을 수신하고, 상기 적어도 두 개의 편집 명령어들을 수신된 순서에 기초하여 상기 클라이언트 그룹에 포함된 클라이언트들 각각에 송신할 수 있다. 예를 들어, 명령어 전달 서버(120)는 제2 클라이언트(902)로부터 수신한 편집 명령어를 적어도 하나의 클라이언트(900)모두에 송신한다. 또한, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 수신한 편집 명령어를 명령어 저장 서버(130)로 전송한다.
명령어 저장 서버(130)는 명령어 전달 서버(120)로부터 전송된 편집 명령어들을 저장한다. 구체적으로, 명령어 저장 서버(130)는 명령어 전달 서버(120)가 전송한 순서대로 편집 명령어들을 저장할 수 있다. 여기서, 명령어 전달 서버(120)가 전송한 순서는 명령어 전달 서버(120)가 편집 명령어를 수신 한 순서와 동일할 수 있다. 나아가, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서대로 저장하여 명령어 리스트를 생성할 수 있고, 미리 결정된 조건에 따라 명령어 리스트를 엔진-풀 서버(140)로 송신할 수 있다. 명령어 저장 서버(130)는 명령어 전달 서버(120)가 수신한 편집 명령어들이 수신된 순서에 기초하여 수집된 명령어 리스트를 생성하고, 미리 결정된 조건이 충족되면 명령어 리스트를 엔진-풀 서버(140)로 송신할 수 있다. 상기 미리 결정된 조건은, 상기 적어도 하나의 클라이언트로부터 편집 명령어를 일정 시간 동안 수신 하지 않는 경우, 편집 명령어가 명령어 저장 서버에 임계 값 이상 누적된 경우 또는 적어도 하나의 클라이언트의 접속 종료를 감지한 경우를 포함할 수 있다. 명령어 저장 서버(130)는 명령어 전달 서버(120)와 물리적으로 동일한 서버의 상이한 모듈일 수도 있고, 물리적으로 구분된 서버일 수도 있다.
엔진-풀 서버(140)는 시드 문서 서버(110)로부터 시드 문서 파일을 수신하고, 명령어 저장 서버(130)로부터 명령어 리스트를 수신하여, 시드 문서 파일 및 명령어 리스트를 기초로 갱신 시드 문서 파일을 생성한다. 예를 들어, 엔진-풀 서버(140)는 시드 문서 파일에 명령어 리스트에 포함된 편집 명령어를 병합하여, 갱신 시드 문서 파일을 생성할 수 있다. 또한, 엔진-풀 서버(140)는 시드 문서 파일 및 편집 명령어를 기초로 하거나 갱신 시드 문서 파일 및 추가 편집 명령어를 기초로 갱신 공동 편집 문서 파일을 생성하는 엔진(engine)을 포함할 수 있다. 엔진-풀 서버(140)는 미리 설정된 조건이 충족되면, 상기 수신된 편집 명령어들이 수신된 순서에 기초하여 수집된 명령어 리스트에 기초하여, 상기 공동 편집 문서와 관련되는 시드 문서 파일을 갱신할 수 있다. 또한, 엔진-풀 서버(140)는 갱신 시드 문서 파일을 다시 시드 문서 서버(110)로 전송한다.
도 1을 참조하면, 적어도 하나의 클라이언트(900)는 제1 클라이언트(901), 제2 클라이언트(902)및 제3 클라이언트(903)를 포함한다. 도 1에는 적어도 하나의 클라이언트(900)가 3개의 클라이언트를 포함하는 것으로 도시되었으나, 적어도 하나의 클라이언트(900)에 포함되는 클라이언트의 수는 이에 제한되지 않는다. 제1 내지 제3 클라이언트들은 클라이언트 그룹(900)을 구성할 수 있다.
도 1을 참조하면, 적어도 하나의 클라이언트(900)는 공유 서버(1000)에 문서 파일을 업로드할 수 있다. 구체적으로, 적어도 하나의 클라이언트(900)중 임의의 하나의 클라이언트, 예를 들어, 제1 클라이언트(901)가 공유 서버(1000)에 공유하고자 하는 문서 파일을 업로드할 수 있다. 이하, 제1 클라이언트(901)가 공유 서버(1000)에 문서 파일을 업로드한 경우를 기준으로 공동 편집 문서를 공유하는 방법을 설명한다.
또한, 적어도 하나의 클라이언트(900)각각은 시드 문서 파일 및 편집 명령어를 기초로 하거나 갱신 시드 문서 파일 및 추가 편집 명령어를 기초로 갱신 공동 편집 문서 파일을 생성하는 엔진(engine)을 포함한다. 적어도 하나의 클라이언트(900)각각에 포함된 엔진의 구체적인 기능에 대해서는 도 4 및 도 8을 참조하여 후술한다.
도 1을 참조하면, 공유 서버(1000)는 공동 편집 문서 공유 장치(100)에 문서 파일에 관한 정보를 제공할 수 있다. 예를 들어, 공유 서버(1000)는 문서 파일을 복사하여 공동 편집 문서 공유 장치(100)에 시드 문서 파일을 제공할 수 있다.
도 1을 참조하면, 바로가기 파일 서버(1200)는 공유 서버(1000)와 통신 가능하도록 연결된다. 구체적으로, 바로가기 파일 서버(1200)는 공유 서버(1000)에 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 예를 들어, 제1 클라이언트(901)로부터 문서 파일을 클라이언트 그룹(900)에 포함된 다른 클라이언트들 또는 클라이언트 그룹(900)에 포함되지 않은 추가 클라이언트(910)와 공유하고자 하는 공유 신호를 공유 서버(1000)가 수신하는 경우, 바로가기 파일 서버(1200)는 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 바로가기 파일에 대한 구체적인 설명은 도 7 및 도 8을 참조하여 후술한다.
이에 따라, 명령어의 전달과 시드 문서 파일의 갱신을 이원화한 명령어 전달 서버(120)및 엔진-풀 서버(140)를 포함하는 공동 편집 문서 공유 장치(100)는 하나의 서버를 통해 편집 명령어가 수신될 때마다 공동 문서 파일이 갱신되는 경우 발생하는 서버의 리소스 낭비와 공동 문서 파일의 갱신 속도 및 성능의 저하를 개선할 수 있다.
본 개시의 일 실시 예에 공동 편집 문서 공유 장치(100)는 클라이언트로부터 수신된 편집 명령어를 다른 클라이언트로 전달하는 기능과, 편집 명령어를 공동 편집 문서에 병합하는 기능을 분리하여, 클라이언트 수의 증가에 따라 엔진의 수를 상응하게 증가시키지 않아도 되므로 리소스 요구량의 급증을 방지할 수 있고, 서버의 부담을 절감할 수 있다.
공동 편집 문서 공유 장치(100)의 각 구성들은 설명의 편의상 개별적인 구성으로 도시한 것일 뿐, 구현 방법에 따라 하나의 구성으로 구현되거나 하나의 구성이 2 이상의 구성으로 분리될 수 있다.
도 2는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 따라 공동 편집 문서 파일을 공유하기 위한 절차를 도시한 것이다. 도 3은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 설명의 편의를 위해 도 1을 참조하여 설명한다.
본 개시에 따른 공동 편집 문서를 공유하는 방법은 시드 문서 서버(110)가 공유 서버(1000)에 업로드된 문서 파일을 기초로 생성된 시드 문서 파일을 적어도 하나의 클라이언트(900)로 송신함으로써 개시된다(S210).
도 3을 참조하면, 시드 문서 서버(110)는 시드 문서 파일을 저장하고, 공동 편집 문서 공유 장치(100)에 연결되어 공동 편집을 요청한 클라이언트에 시드 문서 파일을 송신한다. 구체적으로, 시드 문서 서버(110)는 복수의 시드 문서 파일을 저장할 수 있다. 예를 들어, 클라이언트의 요청에 의해 시드 문서 파일이 생성되면 시드 문서 서버(110)는 생성된 시드 문서 파일을 저장한다.
또한, 시드 문서 서버(110)는 시드 문서 파일 및 명령어 리스트를 기초로 갱신 시드 문서 파일이 생성되면, 갱신 시드 문서 파일도 저장할 수 있다. 예를 들어, 제1 시드 문서 파일(111)이 클라이언트의 요청에 의해 생성되면 제1 시드 문서 파일(111)은 시드 문서 서버(110)에 저장되고, 제1 시드 문서 파일(111)및 명령어 리스트를 기초로 갱신 시드 문서 파일인 제2 시드 문서 파일이 생성되면 제2 시드 문서 파일도 시드 문서 서버(110)에 저장된다. 이에 따라, 시드 문서 서버(110)는 적어도 하나의 시드 문서 파일을 저장할 수 있다.
도 3을 참조하면, 시드 문서 서버(110)는 저장한 시드 문서 파일을 적어도 하나의 클라이언트(900)에 송신할 수 있다. 구체적으로, 적어도 하나의 클라이언트(900)가 문서 파일을 공유하고자 하는 경우, 시드 문서 서버(110)는 공유 요청한 문서 파일에 대응하는 시드 문서 파일을 클라이언트에 송신할 수 있다. 시드 문서 서버(110)가 시드 문서 파일을 클라이언트에 송신하는 구체적인 과정에 대해서는 도 5 및 도 6을 참조하여 후술한다.
나아가, 시드 문서 서버(110)는 공동 편집 문서 공유 장치(100)에 연결되어 있는 클라이언트 이외에 추가로 공동 편집을 요청하여 공동 편집 문서 공유 장치(100)에 연결된 추가 클라이언트(910)에 갱신 시드 문서 파일을 송신 할 수 있다. 추가 클라이언트(910)에 갱신 시드 문서를 송신하는 구체적인 과정에 대해서는 도 7 및 도 8을 참조하여 후술한다.
이어서, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 편집 명령어를 수신한다(S220). 이어서, 명령어 전달 서버(120)는 편집 명령어를 수신한 순서에 대응하여 편집 명령어를 적어도 하나의 클라이언트(900)각각으로 송신한다(S230).
도 3을 참조하면, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)중 어느 하나로부터 편집 명령어를 수신하면 곧바로 적어도 하나의 클라이언트(900)에 포함된 모든 클라이언트 각각에 수신한 편집 명령어를 송신한다. 예를 들어, 제1 클라이언트(901)가 제1 편집 명령어(131)를 입력하면 명령어 전달 서버(120)는 제1 편집 명령어(131)를 수신하여 적어도 하나의 클라이언트(900)각각으로 송신한다. 나아가, 제1 클라이언트(901)가 제2 편집 명령어(132)및 제3 편집 명령어(133)를 순서대로 입력하면 명령어 전달 서버(120)는 편집 명령어를 수신한 순서에 대응하여 제2 편집 명령어(132)를 먼저 적어도 하나의 클라이언트(900)각각으로 송신하고 그 다음 제3 편집 명령어(133)를 적어도 하나의 클라이언트(900)각각에 송신한다. 도 3에서는 제1 클라이언트(901)로부터 편집 명령어가 전달되는 것으로 도시되었으나, 이에 제한되지 않고 편집 명령어는 적어도 하나의 클라이언트(900)각각으로부터 임의로 송신될 수 있다.
또한, 명령어 전달 서버(120)는 수신한 순서대로 편집 명령어를 명령어 저장 서버(130)에 전송한다. 예를 들어, 적어도 하나의 클라이언트(900)각각으로부터 제1 편집 명령어(131), 제2 편집 명령어(132)및 제3 편집 명령어(133)순서로 명령어 전달 서버(120)가 편집 명령어를 수신한 경우, 명령어 전달 서버(120)도 편집 명령어를 제1 편집 명령어(131), 제2 편집 명령어(132)및 제3 편집 명령어(133)순서로 명령어 저장 서버(130)에 전송한다.
이에 따라, 적어도 하나의 클라이언트(900)각각은 명령어 전달 서버(120)를 통해 편집 명령어를 실시간으로 수신하고, 적어도 하나의 클라이언트(900)각각이 갖고 있는 시드 문서 파일에 편집 명령어를 적용하여 실시간으로 갱신 공동 편집 문서를 생성할 수 있다. 적어도 하나의 클라이언트(900)각각은 공동 편집 문서를 편집하는 편집 명령어를 명령어 전달 서버를 통해 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 다른 클라이언트에게 전달되도록 상기 명령어 전달 서버로 전송하고, 상기 명령어 전달 서버로부터 전송된, 다른 클라이언트에서 행해진 상기 공동 편집 문서에 대한 편집을 나타내는 공동 편집 문서를 편집하는 편집 명령어를 수신하고, 상기 적어도 하나의 다른 클라이언트로부터의 수신된 공동 편집 문서를 편집하는 편집 명령어 및 상기 공동 편집 문서를 기초로 갱신 공동 편집 문서를 생성함으로써, 적어도 하나의 클라이언트(900)각각이 갱신 공동 편집 문서를 생성할 수 있다. 적어도 하나의 클라이언트(900)각각이 갱신 공동 편집 문서를 생성하는 구체적인 과정에 대해서는 도 4를 참조하여 후술한다.
이어서, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서에 대응하여 편집 명령어를 저장한다(S240).
여기서, 명령어 전달 서버(120)가 명령어 저장 서버(130)로 편집 명령어를 송신하는 단계는 명령어 전달 서버(120)가 적어도 하나의 클라이언트(900)에 편집 명령어를 송신하는 단계와 동시에 이루어질 수도 있다.
또한, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서대로 명령어 리스트를 생성하여 편집 명령어를 저장할 수 있다. 나아가, 명령어 저장 서버(130)는 미리 결정된 조건에 의해 저장된 편집 명령어 또는 명령어 리스트를 엔진-풀 서버(140)로 전송할 수 있다. 명령어 저장 서버(130)및 엔진-풀 서버(140)사이에서 편집 명령어 및 명령어 리스트의 구체적인 전송 관계에 대해서는 도 7 및 도 8을 참조하여 후술한다.
이에 따라, 공동 편집 문서 공유 장치(100)는 편집 명령어를 명령어 전달 서버(120)를 통해 곧바로 적어도 하나의 클라이언트(900)에 전송함으로써, 적은 처리 부하 및 적은 리소스 사용만으로 효율적으로 문서 파일에 대한 공동 편집과 갱신을 구현할 수 있다. 또한, 공동 편집 문서 공유 장치(100)는 수신한 편집명령어를 순서대로 명령어 저장 서버(130)에 저장함으로써, 문서 파일을 공동 편집하고자 하는 클라이언트가 추가적으로 연결되더라도 저장된 편집 명령어를 기초로 최신의 갱신 공동 편집 문서를 추가 클라이언트(910)에 제공할 수 있다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 4a를 참조하면, 적어도 하나의 클라이언트(900)각각은 엔진(940)을 포함한다. 엔진(940)은 시드 문서 파일 및 편집 명령어를 기초로 갱신 공동 편집 문서를 생성한다. 예를 들어, 적어도 하나의 클라이언트(900)각각이 제1 시드 문서 파일(111)을 갖고 공동 편집하는 경우, 적어도 하나의 클라이언트(900)각각에서 엔진(940)은 수신한 제1 편집 명령어(131)를 제1 시드 문서 파일(111)에 적용하여 갱신 공동 편집 문서를 생성한다. 즉, 적어도 하나의 클라이언트(900)각각은 편집 명령어를 수신할 때마다 엔진(940)을 통해 시드 문서파일을 기초로 갱신 공동 편집 문서를 생성하여 출력할 수 있다.
도 4b를 참조하면, 공동 편집 문서 출력 화면(400)이 적어도 하나의 클라이언트(900)각각에 출력된다. 구체적으로, 공동 편집 문서 출력 화면(400)은 시드 문서 파일을 출력하고, 시드 문서 파일에 편집 명령어가 적용되어 생성된 갱신 공동 편집 문서를 출력할 수도 있다. 예를 들어, 제1 공동 편집 문서 출력 화면(401)은 제1 시드 문서 파일(111)을 출력한다. 이후, 적어도 하나의 클라이언트(900)각각이 제1 편집 명령어(431)를 수신하면, 제2 공동 편집 문서 출력 화면(402)은 엔진(940)을 통해 제1 시드 문서 파일(111)및 제1 편집 명령어(431)를 기초로 생성된 갱신 공동 편집 문서를 출력한다.
이에 따라, 명령어 전달 서버(120)로부터 송신된 편집 명령어들은 적어도 하나의 클라이언트(900)각각에서 엔진(940)에 의해 시드 문서 파일에 적용되어, 적어도 하나의 클라이언트(900)각각은 갱신 공동 편집 문서를 생성하여 실시간으로 전송된 편집 명령어들을 적용한 갱신 공동 편집 문서를 출력할 수 있다.
본 개시의 실시예에 따른 명령어 전달 서버(120)는 편집 명령어를 시드 문서 파일에 적용시켜 갱신 공동 편집 문서를 생성하는 엔진을 포함하지 않고 편집 명령어를 수신하는대로 적어도 하나의 클라이언트(900)로 전송할 수 있다. 이에 따라, 공동 편집 문서 공유 장치(100)는 공동 편집 문서를 생성하기 위한 엔진을 위한 리소스 및 부하를 절감할 수 있고, 편집 명령어를 실시간으로 적어도 하나의 클라이언트(900)각각에 송신할 수 있다. 즉, 공동 편집 문서 공유 장치(100)를 통해 적어도 하나의 클라이언트(900)각각은 보다 신속하게 공동 편집 문서를 출력할 수 있다.
도 5는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 도 5는 시드 문서 파일이 생성되고 클라이언트에 송신되는 과정을 도시한 것으로서, 도 3을 참조하여 이미 설명된 구성요소에 대한 중복 설명을 생략한다.
도 5를 참조하면, 적어도 하나의 클라이언트(900)중 어느 하나는 공유 서버(1000)에 문서 파일을 업로드한다. 공유 서버(1000)가 공유 신호를 수신하는 경우, 공유 서버(1000)는 업로드된 문서 파일을 바로가기 파일 서버(1200)로 전송할 수 있다. 또한, 공유 서버(1000)는 업로드된 문서 파일을 복사하여 시드 문서 파일을 생성하고, 시드 문서 파일을 시드 저장 서버(110)에 송신할 수 있다. 이에, 시드 문서 파일은 시드 저장 서버(110)에 저장되고, 바로 가기 파일 서버(1200)는 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 여기서, 바로가기 파일은 시드 문서 파일이 저장된 위치에 대한 정보를 포함한다. 구체적으로, 바로가기 파일은 대응하는 문서 파일을 기초로 생성된 시드 문서 파일이 저장된 시드 저장 서버(110)의 주소, 시드 저장 서버(110)내에서 저장된 구체적인 위치에 대한 정보를 포함할 수 있다.
도 5를 참조하면, 적어도 하나의 클라이언트(900)각각은 바로가기 파일을 통해 시드 문서 파일을 시드 문서 서버(110)로부터 수신한다. 구체적으로, 적어도 하나의 클라이언트(900)가 공유 서버(1000)에 업로드된 문서 파일을 공유하는 경우, 적어도 하나의 클라이언트(900)는 업로드된 문서 파일을 직접 공유하지 않고, 바로가기 파일을 통해 시드 문서 파일을 수신한다. 이에 따라, 적 어도 하나의 클라이언트(900)각각은 수신한 시드 문서 파일을 기초로 공동 편집을 하고, 공동 편집을 위해 입력한 편집 명령어를 명령어 전달 서버(120)로 송신한다. 적어도 하나의 클라이언트(900)가 바로가기 파일을 통해 시드 문서 파일을 공유하는 구체적인 태양에 대해서는 도 6을 참조하여 후술한다.
본 개시의 실시예에 따른 공동 편집 문서 공유 장치(100)는 공동 편집을 위한 시드 문서 파일을 저장하고 적어도 하나의 클라이언트(900)로 송신함으로써, 공유 서버(1000)에 실제로 업로드된 문서 파일과 별개로 공동 편집을 위한 문서 파일을 저장할 수 있다. 즉, 문서 파일을 업로드한 클라이언트는 공동 편집을 위한 문서 파일과 개인 소유의 문서 파일을 분리하여 관리할 수 있게 된다.
도 6a 및 도 6b는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 6a를 참조하면, 공동 편집 문서 출력 화면(610)은 임의의 클라이언트에서 출력되는 문서 파일을 표시한다. 또한, 공동 편집 문서 출력 화면(610)은 공유 버튼(611)을 표시한다. 이에, 임의의 클라이언트의 사용자는 현재 출력되고 있는 문서 파일에서 공유 버튼(611)을 클릭하여 공유 신호를 공유 서버(1000)로 송신할 수 있다.
도 6b를 참조하면, 문서 파일 관리 화면(620)은 임의의 클라이언트에서 출력되는 문서 파일을 관리하는 어플리케이션의 예시적인 화면이다. 예를 들어, 문서 파일 관리 화면(620)은 문서 파일을 저장하고 문서 파일의 공유 여부를 관리할 수 있는 파일 매니저(file manager)의 예시적인 화면일 수 있다. 여기서, 문서 파일 관리 화면(620)은 공유 버튼(621)을 표시하고, 문서 파일(631)및 바로가기 파일(632)을 표시한다. 또한, 문서 파일 관리 화면(620)은 문서 파일(631)또는 바로가기 파일(632)에 중첩되어 드롭-다운 메뉴(dropdownmenu)(622)를 더 표시할 수 있다. 이에, 임의의 클라이언트의 사용자는 현재 출력되고 있는 문서 파일에서 공유 버튼(621)또는 드롭-다운 메뉴(622)에서의 '공유'를 선택하여 공유 신호를 공유 서버(1000)로 송신할 수 있다.
이에 따라, 공유 신호를 수신한 공유 서버(1000)는 바로가기 파일 서버(1200)가 바로가기 파일을 생성하도록 신호를 전송하고, 시드 문서 파일을 생성하여 시드 저장 서버(110)로 송신한다.
도 7은 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 도 7은 추가 클라이언트에 갱신 시드 문서 파일 및 추가 편집 명령어를 송신하는 과정을 도시한 것으로서, 도 3 및 도 5를 참조하여 이미 설명된 구성요소에 대한 중복 설명을 생략한다.
도 7을 참조하면, 문서 파일을 공동 편집하도록 시드 문서 서버(110)에 추가 클라이언트(910)가 연결된 경우, 시드 문서 서버(110)는 추가 클라이언트(910)에 갱신 시드 문서 파일을 송신한다. 여기서, 추가 클라이언트(910)는 적어도 하나의 클라이언트(900)각각이 제1 시드 문서 파일(111)및 적어도 하나의 편집 명령어를 기초로 갱신 공동 편집 문서를 생성한 이후 시드 문서 서버(110)에 문서 파일의 공동 편집을 요청한 클라이언트일 수 있다. 여기서 추가 클라이언트(910)는 클라이언트 그룹(900)에 포함되지 않은 클라이언트 일 수 있다. 추가 클라이언트(910)는 이하에서 서술하는 공동 문서 편집 장치(100)에 연결 후, 갱신 공동 편집 문서를 생성한 후에는 클라이언트 그룹(900)에 포함될 수 있다.
먼저, 시드 문서 서버(110)는 미리 결정된 조건에 따라 시드 문서 파일을 엔진-풀 서버(140)로 송신한다. 예를 들어, 적어도 하나의 클라이언트(900)로부터 편집 명령어를 일정 시간 동안 수신하지 않는 경우, 편집 명령어가 명령어 저장 서버(130)에 200개 이상 저장된 경우 또는 적어도 하나의 클라이언트(900)중 어느 하나가 공동 편집 문서 공유 장치(100)에 접속을 종료한 경우, 시드 문서 서버(110)는 제1 시드 문서 파일(111)을 엔진-풀 서버(140)로 송신한다.
또한, 명령어 저장 서버(130)는 미리 결정된 조건에 따라 생성된 명령어 리스트(730)를 엔진-풀 서버(140)로 송신한다. 여기서, 명령어 리스트(730)는 적어도 하나의 편집 명령어를 포함한다. 예를 들어, 명령어 리스트(730)는 제1 편집 명령어(131)및 제2 편집 명령어(132)를 포함하여 생성될 수 있다.
도 7을 참조하면, 명령어 저장 서버(130)는 미리 결정된 조건에 따라 적어도 하나의 편집 명령어를 기초로 생성된 명령어 리스트(730)를 엔진-풀 서버(140)로 송신한다. 예를 들어, 적어도 하나의 클라이언트(900)로부터 편집 명령어를 일정 시간 동안 수신하지 않는 경우, 편집 명령어가 명령어 저장 서버(130)에 200개 이상 저장된 경우 또는 적어도 하나의 클라이언트(900)중 어느 하나가 공동 편집 문서 공유 장치(100)에 접속을 종료한 경우, 명령어 저장 서버(130)는 명령어 리스트(730)를 엔진-풀 서버(140)로 송신할 수 있다.
이어서, 엔진-풀 서버(140)는 수신한 시드 문서 파일 및 명령어 리스트(730)를 기초로 갱신 시드 문서 파일을 생성한다. 예를 들어, 엔진-풀 서버(140)는 제1 시드 문서 파일(111)을 수신하고 명령어 리스트(730)를 수신하여, 제1 시드 문서 파일(111)에 제1 편집 명령어(131)및 제2 편집 명령어(132)를 적용하여 갱신 시드 문서 파일인 제2 시드 문서 파일(112)을 생성한다.
이어서, 엔진-풀 서버(140)는 생성된 갱신 시드 문서 파일을 시드 문서 서버(110)로 송신하고, 시드 문서 서버(110)는 제1 시드 문서 파일(111)과 함께 갱신 시드 문서 파일인 제2 시드 문서 파일(112)을 저장한다. 이에 따라, 시드 문서 서버(110)는 추가 클라이언트(910)가 연결된 경우, 갱신 시드 문서 파일을 추가 클라이언트(910)에 송신할 수 있다.
도 7을 참조하면, 명령어 저장 서버(130)는 명령어 리스트(730)가 엔진-풀 서버(140)에 송신된 이후 저장된 추가 편집 명령어(133)를 명령어 전달 서버(120)에 전송한다. 명령어 리스트(730)가 엔진-풀 서버(140)로 송신된 이후, 명령어 저장 서버(130)가 수신한 편집 명령어는 추가 편집 명령어가 된다. 예를 들어, 명령어 리스트(730)가 엔진-풀 서버(140)로 송신된 이후 추가적으로 수신된 제3 편집 명령어(133)는 추가 편집 명령어가 된다.
도 7을 참조하면, 명령어 전달 서버(120)는 추가 클라이언트(910)에 추가 편집 명령어(133)를 송신한다. 구체적으로, 시드 문서 서버(110)에 추가 클라이언트(910)가 연결된 경우, 추가 편집 명령어인 제3 편집 명령어(133)는 명령어 전달 서버(120)로 송신되고, 명령어 전달 서버(120)를 통해 추가 편집 명령어인 제3 편집 명령어(133)가 추가 클라이언트(910)로 송신된다.
즉, 추가 클라이언트(910)는 시드 문서 서버(110)로부터 갱신 시드 문서 파일을 수신하고, 명령어 전달 서버(120)로부터 추가 편집 명령어만을 수신하여 갱신 공동 편집 문서를 생성할 수 있다. 갱신 공동 편집 문서를 생성하는 엔진에 대해서는 도 8을 참조하여 후술한다.
즉, 추가 클라이언트(910)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹(900)에서 편집 중인 공동 편집 문서에 대한 공동 편집 요청을 시드 문서 서버(110)로 전송하고, 상기 시드 문서 서버(110)로부터, 엔진-풀 서버(140)가 상기 클라이언트 그룹(900)에 포함된 클라이언트로부터 갱신 시드 문서 파일을 생성하기 전에 수신된 공동 편집 문서를 편집 하는 적어도 하나의 편집 명령어 및 시드 문서에 기초하여 생성된 갱신 시드 문서 파일을 수신하고, 명령어 저장 서버(130)로부터, 상기 클라이언트 그룹에 포함된 클라이언트로부터 상기 갱신 시드 문서 파일을 생성한 후 수신된 공동 편집 문서를 편집 하는 적어도 하나의 추가 편집 명령어를 수신하여, 상기 시드 문서 서버(110)로부터 수신된 갱신 시드 문서 파일 및 상기 명령어 저장 서버(130)로부터 수신된 추가 편집 명령어를 기초로 갱신 공동 편집 문서를 생성할 수 있다.
이와 같은 추가 클라이언트(910)가 이미 갱신 공동 편집 문서로 변환된 제1 시드 문서 파일(111)을 수신하는 경우, 제1 시드 문서 파일(111)및 적어도 하나의 편집 명령어를 모두 수신하는 것은 문서를 공동 편집하는데 비효율적일 수 있다.
이에 따라, 공동 편집 문서 공유 장치(100)는 미리 결정된 조건에 따라 편집 명령어를 명령어 리스트(730)로 저장하고, 엔진-풀 서버(140)를 이용하여 갱신 시드 문서 파일을 생성함으로써, 추가 클라이언트(910)는 갱신 시드 문서 파일 및 추가 편집 명령어만을 수신하여 보다 효율적으로 문서 파일을 공동 편집할 수 있다.
나아가, 명령어 전달 서버(120)는 실시간으로 개별 편집 명령어 또는 추가 편집 명령어를 직접 적어도 하나의 클라이언트(900)및 추가 클라이언트(910)에 전달하고, 엔진-풀 서버(140)는 시드 문서 파일과 명령어 리스트(730)만을 기초로 갱신 시드 문서 파일을 생성하여, 공동 편집 문서 공유 장치(100)가 명령어의 전달과 시드 문서 파일의 갱신을 서로 다른 기능을 갖는 이원화된 서버에서 실행하도록 함으로써, 서버 각각의 처리 부하를 저감시킬 수 있고 신속하게 추가 클라이언트(910)에 공동 편집을 위한 파일을 제공할 수 있다. 이에 따라, 공동 편집 문서 공유 장치(100)를 통해 많은 클라이언트들이 공유하는 문서 파일의 편집을 보다 효율적이고 신속하게 실행할 수 있다.
도 8a 및 도 8b는 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 8a를 참조하면, 추가 클라이언트(910)도 엔진(940)을 포함한다. 이와 같은 엔진(940)은 도 4a에 도시된 바와 같이 적어도 하나의 클라이언트(900)각각에 포함된 엔진(940)과 동일한 기능을 한다. 구체적으로, 엔진(940)은 수신한 갱신 시드 문서 파일(112)및 추가 편집 명령어(133)를 기초로 갱신 공동 편집 문서를 생성한다.
도 8b를 참조하면, 공동 편집 문서 출력 화면(800)은 추가 클라이언트(910)에 출력되는 화면으로서, 갱신 공동 편집 문서를 출력한다. 구체적으로, 공동 편집 문서 출력 화면(800)은 갱신 시드 문서 파일(112)에 추가 편집 명령어(133)가 적용된 표시(833)를 포함한 갱신 공동 편집 문서를 표시한다.
예를 들어, 추가 편집 명령어(133)가 'HIJK' 줄을 삭제하는 것이면, 공동 편집 문서 출력 화면(800)은 삭제가 적용된 표시를 포함한 갱신 공동 편집 문서를 표시한다. 도 8b에서는 공동 편집 문서 출력 화면(800)이 삭제가 적용된 것으로 표시하는 것으로 도시되었으나, 실시예에 따라 삭제가 적용된 부분은 표시되지 않을 수 있으며, 추가 편집 명령어(133)의 특성에 따라 공동 편집 문서 출력 화면(800)에 표시되거나 표시되지 않을 수 있다.
본 개시의 실시예에 따른 공동 편집 문서 공유 장치(100)는 엔진-풀 서버(140)를 통해서 갱신 시드 문서 파일을 생성함으로써, 명령어 전달 서버(120)를 통해서는 추가 편집 명령어만을 추가 클라이언트(910)에 송신하도록 하여 명령어 전달 서버(120)가 공동 편집 문서의 갱신을 위한 엔진을 포함하지 않을 수 있게 된다. 이에 따라, 명령어 전달 서버(120)는 클라이언트가 추가됨에 따라 공동 편집 문서의 갱신을 위한 엔진을 추가하지 않아도 되며, 엔진의 증가에 따른 처리 부하도 증가하지 않게 된다. 즉, 공동 편집 문서 공유 장치(100)는 공동 편집 문서의 갱신을 위한 엔진을 감소시키거나 최소화하여 클라이언트의 수가 증가하더라도 효율적이고 신속한 문서의 공동 편집을 가능하게 한다.
이하에서는 본 개시의 일 실시예에 따른 공동 문서 공유 방법 및 장치 중 명령어 리스트 생성에 관련한 내용을 서술한다. 이하에서 기재되는 실시예들은 전술한 실시예들과 독립적일 수 있으며, 이하에서 기재되는 실시예들에 포함되는 구성요소들은 전술한 실시예와는 상이한 동작을 수행할 수 있다.
이하에서는 본 개시의 실시예를 설명하기 위하여 추가적으로 사용되는 용어에 대해 정의한다.
본 명세서에서 축약 명령어 리스트란, 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어로 구성되는 명령어 리스트이다. 예를 들어, 명령어 리스트가 포함하는 A, B, C, D 및 E의 편집 명령어 중 축약되어 제거된 D 및 E를 제외한 A, B 및 C로 구성되는 축약 명령어 리스트일 수 있다. 상기 축약의 방식 및 편집 명령어는 예시일뿐, 본 개시는 이에 제한되지 않는다.
도 9는 본 개시의 일 실시예에 따른 명령어 리스트의 개략적인 구성을 도시한 것이다.
본 개시의 일 실시예에 따른 명령어 리스트(730)는 클라이언트 그룹(900)에 포함된 적어도 하나의 클라이언트로부터 송신된 적어도 하나의 편집 명령어를 명령어 저장 서버(130)가 수신한 순서대로 정렬한 리스트 정보일 수 있다.
또한, 상기 명령어 리스트(730)는 명령어 저장 서버(130)에서 생성되고, 사전 설정한 조건이 충족되는 경우, 엔진-풀 서버(140)로 송신될 수 있다. 상기 사전 설정한 조건은 예를 들어, 명령어 리스트에 포함된 편집 명령어의 개수, 명령어 리스트의 저장 용량 및 사절 결정된 시간의 경과일 수 있다. 전술한 사전 설정한 조건은 예시일뿐, 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따른 명령어 리스트는 하나 이상의 편집 명령어로 구성될 수 있다. 그리고 편집 명령어는 상기 편집 명령어에 대한 클라이언트 정보(731), 편집내용(732) 및 시간 정보(733)를 포함할 수 있다.
여기서 상기 클라이언트 정보(731)는 상기 명령어 리스트(730)가 포함하는 편집 명령어 각각의 출처에 해당하는 클라이언트에 대한 정보를 포함할 수 있다. 여기서 상기 클라이언트는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 클라이언트일 수 있다.
또한, 상기 편집내용(732)은 명령어 리스트(730)에 포함된 편집 명령어에 따른 공동 편집 문서 편집의 결과에 대한 정보를 포함할 수 있다. 상기 공동 편집 문서 편집은 클라이언트 그룹에 포함된 적어도 하나의 클라이언트가 수신한 제 1 시드 문서 파일(111)에 대한 편집을 포함할 수 있다. 예를 들어, 편집내용은 문자 또는 미디어 파일의 입력, 삭제, 글꼴 변환, 슬라이드의 생성, 실행취소 및 재실행 등을 포함할 수 있다. 전술한 편집들은 예시일뿐, 본 개시는 이에 제한되지 않는다.
상기 시간 정보(733)는 예를 들어, 명령어 전달 서버가 편집 명령어를 수신한 서버 시간 정보, 명령어 저장 서버(130)가 편집 명령어를 수신한 시간 정보, 또는 상기 클라이언트가 송신한 클라이언트 시간 정보를 포함할 수 있다.
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 상기 클라이언트 정보(731)에 기초하여 명령어 리스트에 포함된 편집 명령어 각각이 어느 클라이언트로부터 수신된 것인지를 파악할 수 있다.
또한, 본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 편집 명령어들을 수신한 순서에 대응하도록 저장하여 명령어 리스트(730)를 생성할 수 있다. 그리고, 명령어 저장 서버(130)는 시간 정보(733)에 기초하여 상기 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능한지도 판단할 수 있다. 전술한 명령어 저장 서버(130)의 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)에 의해 수행될 수도 있다.
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 명령어 리스트(730)에 포함된 적어도 두 개의 편집 명령어가 축약가능한지 여부를 판단할 수 있다. 그리고, 명령어 저장 서버는 상기 판단에 기초하여 상기 적어도 두 개의 편집 명령어를 축약할 수 있다.
예를 들어, 명령어 저장 서버(130)는 도 10에 도시된 바와 같이, 명령어 전달 서버(120)으로부터 수신한 적어도 두 개의 편집 명령어들을 수신한 순서에 기초하여 저장하여 명령어 리스트(730)를 생성할 수 있다. 그리고 상기 명령어 리스트(730)에는 제 1 클라이언트(901)로부터 수신한 제 1, 2, 3 및 4 편집 명령어(1, 2, 3, 4)가 포함될 수 있다. 이 중 제 2 편집 명령어(2)에 따른 편집 내용이 "글자 크기변경"이고, 제 3 편집 명령어(3)에 따른 편집 내용이 "실행 취소"인 경우, 명령어 저장 서버(130)는 상기 제 2 및 3 편집 명령어(2, 3)를 축약 가능한 것으로 판단할 수 있다. 따라서, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여 제 2 및 3 편집 명령어를 제거하는 축약을 수행할 수 있다. 따라서, 명령어 저장 서버(130)는 명령어 리스트(730)에서 제 2 및 3 편집 명령어가 제거된 축약 명령어 리스트(750)를 생성할 수 있다. 여기서 축약 명령어 리스트는 제 1 편집 명령어(1) 및 제 4 편집 명령어(4)를 포함할 수 있다.
또한, 본 개시의 일 실시예에 따른 상기 명령어 저장 서버(130)는 명령어 리스트에 포함된 제 1 편집 명령어(1) 및 제 4 편집 명령어(4)에 대해서 축약 가능한지 여부를 판단할 수 있다. 도 9에 도시된 바와 같이, 여기서 제 1 편집 명령어(1)에 따른 편집 내용은 "글꼴 변경"이고, 제 4 편집 명령어(4)에 따른 편집 내용은 "실행 취소"일 수 있다. 이러한 경우, 명령어 저장 서버(130)는 상기 제 1 및 4 편집 명령어(1, 4)가 축약 될 수 있다고 판단할 수 있다. 따라서, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 제 1 및 4 편집 명령어를 제거하는 축약을 수행할 수 있다. 따라서, 명령어 저장 서버(130)는 제 1, 2, 3 및 4 편집 명령어(1, 2, 3, 4)가 모두 제거된 축약 명령어 리스트(750)를 생성할 수 있다. 전술한 명령어 저장 서버의 편집 명령어에 대한 축약 가능 판단 및 축약 명령어 리스트 생성은 예시일뿐, 본 개시는 이에 제한되지 않는다. 또한, 전술한 명령어 저장 서버의 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버에 의해 수행될 수도 있다.
따라서, 본 개시의 일 실시 예에 따라 불필요한 편집 명령어가 제거될 수 있어 서버와 사용자 단말, 또는 서버와 서버간의 통신 트래픽이 감소될 수 있고, 편집 명령어를 전달받은 클라이언트 디바이스에서 병합하여야 할 명령어의 수가 감소하게 되어 클라이언트 디바이스의 연산 부담이 감소하여 성능이 향상될 수 있다.
도 10은 본 개시의 다른 일 실시예에 따른 명령어 리스트의 개략적인 구성을 도시한 것이다.
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 클라이언트 그룹(900)에 포함된 적어도 하나의 클라이언트로부터 수신된 둘 이상의 편집 명령어 중 각각의 클라이언트로부터 수신된 편집 명령어에 대하여 편집 명령어의 축약 가능 여부를 판단할 수 있다.
보다 구체적으로, 명령어 저장 서버(130)는 명령어 리스트(730)에 포함된 클라이언트 정보(731)에 기초하여 각각의 편집 명령어가 어느 클라이언트로부터 수신된지를 파악할 수 있다. 그리고 상기 명령어 저장 서버(130)는 클라이언트 그룹(900)에 포함된 복수의 클라이언트들로부터 수신된 편집 명령어들에 대해서 각각의 클라이언트 별로 편집 명령어의 축약 가능 여부를 판단할 수 있다. 따라서, 명령어 저장 서버(130)는 특정 클라이언트로부터 둘 이상의 편집 명령어가 수신되고, 둘 이상의 편집 명령어 사이에 다른 클라이언트로부터의 편집 명령어가 수신된 경우에도, 특정 클라이언트로부터 수신된 편집 명령어에 대해서 축약 가능여부를 판단할 수 있다.
예를 들어, 도 10에 도시된 바와 같이, 명령어 리스트(730)에 포함된 편집 명령어들은 클라이언트 정보(731)를 포함할 수 있다. 따라서, 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부의 판단은 5개의 편집 명령어 중 제 1 클라이언트로부터 수신된 3개의 편집 명령어"Insert 'ABCD'", "실행 취소(Undo)" 및 "재실행(Redo)" 에 대해서, 또한 제 2 클라이언트로부터 수신된 2개의 편집 명령어 "Insert 'EFG'" 및 "Insert 'HIJK'"에 대해서 각각 수행될 수 있다. 전술한 명령어 리스트의 축약 가능 여부 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다.
또한, 본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 편집 명령어에 포함된 시간 정보(733)에 기초하여 둘 이상의 편집 명령어에 대한 축약 가능 여부를 판단할 수 있다. 예를 들어, 명령어 저장 서버(130)는 사전 설정된 시간 범위에 포함된 편집 명령어들에 대해서 편집 명령어의 축약 가능 여부를 판단할 수 있다.
보다 구체적으로, 명령어 저장 서버(130)는 명령어 리스트(730)에 포함된 편집 명령어의 시간 정보(733)에 기초하여 각각의 편집 명령어가 명령어 전달 서버(120)에 수신된 시간, 명령어 저장 서버(130)가 각각의 편집 명령어를 수신한 시간, 또는 각각의 클라이언트가 송신한 시간을 파악할 수 있다. 그리고 상기 명령어 저장 서버(130)는 각각의 편집 명령어에 포함된 시간 정보(733)에 기초하여, 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대해서 축약이 가능한지 여부를 판단할 수 있다.
예를 들어, 도 10에 도시된 바와 같이, 명령어 리스트(730)에 포함된 편집 명령어들은 시간 정보(733)를 포함할 수 있다. 따라서, 사전 설정된 시간 범위가 10초인 경우, 명령어 저장 서버(130)는 명령어 리스트 상에 연속적으로 저장된 편집 명령어 중 10초 이내의 시간 범위에 수신된 편집 명령어에 대해서만 축약이 가능한지 여부를 판단할 수 있다. 즉, 15:32:40에 수신된 "Insert 'EFG'"를 편집내용으로 하는 제 6 편집 명령어(6)를 기준으로 할 경우, 축약 가능 여부가 판단될 대상 편집 명령어는 15:32:50까지 수신된 "실행 취소"를 편집내용으로 하는 제 7 편집 명령어(7)를 포함할 수 있다. 따라서, 명령어 저장 서버는 상기 "Insert 'EFG'" 및 "실행 취소"의 제 6 및 7 편집 명령어(6, 7)에 대해서 축약이 가능한지 여부를 판단할 수 있다. 전술한 명령어 리스트의 축약 가능 여부 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다.
또 다른 예시로써, 도 10에 도시된 바와 같이, 명령어 리스트(730)에 포함된 편집 명령어들은 클라이언트 정보(731) 및 시간 정보(733)를 포함할 수 있다. 따라서, 명령어 저장 서버(130)는 동일한 클라이언트로부터 수신되고 사전 설정된 시간 범위에 수신된 편집 명령어에 대해서만 축약이 가능한지 여부를 판단할 수 있다. 즉, 사전 설정된 시간 범위가 15초이고, 15:32:41에 수신된 "실행 취소"를 편집내용으로 하는 제 7 편집 명령어(7)를 기준으로 할 경우, 축약 가능 여부가 판단될 대상 편집 명령어는 동일한 클라이언트인 제 1 클라이언트로부터 15초 이내에 수신된 "재실행"을 편집내용으로 하는 제 9 편집 명령어(9)일 수 있다. 따라서, 명령어 저장 서버(130)는 상기 "실행 취소" 및 "재실행"을 편집내용으로 하는 제 7 및 9 편집 명령어(7, 9)에 대해서만 축약이 가능한지 여부를 판단할 수 있다. 전술한 명령어 리스트의 축약 가능 여부 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다.
또한, 본 개시의 다른 일 실시예에 따른 명령어 저장 서버(130)는 명령어 리스트(730)의 순서에 기초하여, 사전 결정된 스택 범위 안에 저장된 둘 이상의 편집 명령어에 대해서 축약이 가능한지 여부를 판단할 수 있다. 여기서 스택 범위란 편집 명령어들이 명령어 리스트 상에 저장되는 경우, 하나 이상의 편집 명령어들이 쌓여서 생성되는 목록의 순번일 수 있다. 예를 들어, 도 10에 도시된 명령어 리스트는 "Insert 'ABCD'"를 편집내용으로 하는 제 5 편집 명령어(5)부터 "재실행"를 편집내용으로 하는 제 9 편집 명령어(5)까지 총 5 스택일 수 있다.
보다 구체적으로, 명령어 저장 서버(130)는 편집 명령어가 수신된 순서에 대응하도록 편집 명령어를 명령어 리스트(730)에 목록화 시켜 저장할 수 있다. 그리고 상기 명령어 저장 서버(130)는 상기 명령어 리스트 상에서 사전 결정된 스택 범위 안에 존재하는 편집 명령어들에 대해서만 축약 가능 여부를 판단할 수 있다. 또한, 스택의 범위 안에 존재하는 편집 명령어들 중 동일한 클라이언트로부터 수신된 편집 명령어들에 대해서만 축약 가능 여부를 판단할 수 있다.
예를 들어, 도 10에 도시된 바와 같이, 명령어 리스트(730) 상에 5개의 편집 명령어가 쌓여서 5 스택이 존재하고, 사전 결정된 스택 범위가 3일 경우, 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부의 판단은 명령어 리스트 상에 연속적으로 저장된 편집 명령어 중 3개의 범위 안에 존재하는 편집 명령어에 대해 수행될 수 있다. 즉, 명령어 저장 서버(130)는 "Insert 'ABCD'"를 편집내용으로 하는 제 5 편집 명령어(5)를 기준으로 "Insert 'HIJK'"를 편집내용으로 하는 제 8 편집 명령어(8)까지 해당되는 총 4개의 편집 명령어들에 대해서 축약이 가능한지 여부를 판단할 수 있다. 전술한 명령어 리스트의 축약 가능 여부 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다. 또한, 전술한 명령어 저장 서버(130)의 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)에서 수행될 수도 있다.
전술한 예시와 다른 예시로써, 명령어 저장 서버(130)는 동일한 클라이언트로부터 수신되고, 사전 결정된 스택 범위 안에 존재하는 편집 명령어에 대해서만 축약 가능 여부를 판단할 수 있다. 즉, 축약 가능 여부의 판단에 있어서, 사전 결정된 스택 범위가 3이고, 제 2 클라이언트로부터 수신된 "Insert 'EFG'"를 편집내용으로 하는 제 6 편집 명령어(6)를 기준으로 할 수 있다. 이러한 경우, 축약 가능 여부가 판단될 대상 편집 명령어는 동일한 클라이언트인 제 2 클라이언트로부터 3 스택 이내에 존재하는 "Insert 'HIJK'"을 편집내용으로 하는 제 8 편집 명령어(8)일 수 있다. 전술한 명령어 리스트의 축약 가능 여부 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다. 또한, 전술한 명령어 저장 서버(130)의 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)에서 수행될 수도 있다.
도 11a, 11b 및 11c는 본 개시에서 각각의 실시예에 따라 생성되는 명령어 리스트와 축약 명령어 리스트의 예시적인 구성을 도시한 것이다.
도 11a, 11b 및 11c에서 도시되고 이하에서 설명되는 명령어 리스트(730) 및 축약 명령어 리스트(750)는 편의상 편집 명령어의 편집내용(732)만을 도시하였으나 편집 명령어는 클라이언트 정보(731) 및 시간 정보(733)를 더 포함할 수 있다. 또한, 도시된 상기 명령어 리스트 및 축약 명령어 리스트는 동일한 클라이언트로부터 수신되었음을 가정한다.
여기서 명령어 리스트(730)는 적어도 하나의 클라이언트로부터 수신된 하나 이상의 편집 명령어를 명령어 저장 서버(130)가 수신한 순서에 대응하도록 저장하여 생성된 리스트일 수 있다. 또한, 명령어 리스트(730)는 각각의 편집 명령어에 따른 편집의 결과에 해당하는 편집내용(732)을 포함할 수 있다.
그리고, 축약 명령어 리스트(750)는 명령어 저장 서버(130), 또는 엔진-풀 서버(140)가 상기 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어 중 일부를 제거하여 생성한 명령어 리스트(730)에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 명령어 리스트일 수 있다.
본 개시의 일 실시예에 따른 명령어 리스트(730)는 도 11a에 도시된 바와 같이, Enter, 문자의 입력, Backspace, 실행 취소 및 재실행을 편집내용으로 하는 둘 이상의 편집 명령어를 포함할 수 있다. 그리고 명령어 저장 서버(130)는 둘 이상의 편집 명령어에 따른 편집내용(732)에 기초하여 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어가 축약 가능한지를 판단할 수 있다. 보다 구체적으로, 명령어 저장 서버(130)는 둘 이상의 편집 명령어에 따른 편집내용들 간의 관계가 매칭되는지 여부에 기초하여 상기 둘 이상의 편집 명령어들이 축약 가능한지 여부를 판단할 수 있다. 여기서 매칭은 편집내용이 상대적이거나 또는 작업의 시작 및 종료를 의미할 수 있다.
보다 구체적으로, 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어는 제 1 및 제 2 편집 명령어(131, 132)를 포함할 수 있다. 그리고, 제 2 편집 명령어(132)에 따른 편집의 결과는 상기 제 1 편집 명령어(131)에 따른 편집의 실행 취소일 수 있다. 이러한 경우, 명령어 저장 서버(130)는 상기 제 1 및 제 2 편집 명령어가 축약이 가능하다고 판단할 수 있다. 여기서 상기 제 1 편집 명령어(131)는 제 2 편집 명령어(132)와 상이할 수 있다. 그리고, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여 상기 제 1 편집 명령어(131) 및 상기 제 2 편집 명령어(132)를 제거하여 축약 명령어 리스트(750)를 생성할 수 있다. 전술한 명령어 저장 서버의 판단 및 축약 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버에서 수행될 수도 있다.
예를 들어, 도 11a에 도시된 바와 같이, 명령어 리스트(730)에 "Insert 'HIJK'"를 편집 내용으로 하는 제 1 편집 명령어(701) 및 "실행 취소"를 편집 내용으로 하는 제 2 편집 명령어(702)가 순차적으로 저장될 수 있다. 이러한 경우 명령어 저장 서버(130)는 "실행 취소"를 편집 내용으로 하는 제 2 편집 명령어(702)에 따른 편집의 결과가 "Insert 'HIJK'"를 편집 내용으로 하는 제 1 편집 명령어(701)에 따른 편집의 실행 취소이므로 양 편집 명령어에 대한 축약이 가능한 것으로 판단할 수 있다.
그리고, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 축약 가능한 제 1 및 제 2 편집 명령어(701, 702)들을 명령어 리스트(730)에서 제거하여 축약 명령어 리스트(750)를 생성할 수 있다. 따라서, 상기 축약 명령어 리스트(750)는 기존의 명령어 리스트(730)가 포함하는 7개의 편집 명령어보다 두 개 적은 5개의 편집 명령어를 포함할 수 있다. 전술한 명령어 저장 서버의 실행 취소에 대한 편집 명령어 축약 동작은 예시적인 기재일뿐, 본 개시는 이에 제한되지 않는다. 또한, 상기 판단 및 축약 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)가 수행할 수도 있다.
또는, 본 개시의 일 실시예에서 명령어 저장 서버(130)는 둘 이상의 편집 명령어가 제 1 및 제 2 편집 명령어(131, 132)를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 삭제인 경우, 상기 둘 이상의 편집 명령어의 축약이 가능한 것으로 판단할 수 있다. 그리고, 상기 명령어 저장 서버(130)는 상기 제 1 및 제 2 편집 명령어(131, 132)를 제거하여 축약 명령어 리스트(750)를 생성할 수 있다.
예를 들어, 도 11a에 도시된 바와 같이, 명령어 리스트(730)에 "Insert 'QRS'"를 편집내용으로 하는 제 1 편집 명령어(706) 및 "Backspace"를 편집내용으로 하는 제 2 편집 명령어(707)가 연달아 저장될 수 있다. 이러한 경우 명령어 저장 서버(130)는 "Backspace"를 편집내용으로 하는 제 2 편집 명령어(707)에 따른 편집의 결과가 "Insert 'QRS'"를 편집내용으로 하는 제 1 편집 명령어(706)에 따른 편집의 결과의 삭제이므로, 양 편집 명령어에 대한 축약이 가능한 것으로 판단할 수 있다.
그리고, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 축약 가능한 제 1 및 제 2 편집 명령어(706, 707)들을 명령어 리스트에서 제거하여 축약 명령어 리스트(750)를 생성할 수 있다. 따라서, 기존의 명령어 리스트(730)보다 두 개의 편집 명령어가 적은 축약 명령어 리스트(750)를 생성할 수 있다. 전술한 명령어 저장 서버의 삭제에 대한 편집 명령어 축약 동작은 예시적인 기재일뿐, 본 개시는 이에 제한되지 않는다. 또한, 상기 판단 및 축약 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)가 수행할 수도 있다.
또한, 본 개시의 일 실시 예에 다른 명령어 저장 서버(130)가 명령어 리스트에 포함된 편집 명령어 들에 대한 축약 가능 여부를 판단할 때, 적어도 3 개의 편집 명령어를 고려할 수 있다. 보다 구체적으로, 명령어 저장 서버(130)는 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 실행 취소(undo)이고, 제 3 편집 명령어에 따른 편집의 결과가 재실행(redo)가 아닌 경우에 제 1 및 2 편집 명령어를 축약 가능한 것으로 판단할 수 있다.
예를 들어, 도 11a에 도시된 명령어 리스트에 대하여, 명령어 저장 서버(130)가 축약 가능 여부를 판단할 때, "Insert 'HIJK'"를 편집내용으로 하는 제 1 편집 명령어(701) 및 "실행취소(undo)"를 편집내용으로 하는 제 2 편집 명령어(702)는 서로 매칭 되지만, 제 3 편집 명령어(703)가 "재실행(redo)"임을 고려하여 제 1, 제 2 및 제 3 편집 명령어(701, 702, 703)은 축약 불가능한 것으로 판단할 수 있다. 제 1, 제 2 및 제 3 편집 명령어에 따른 편집의 결과는 HIJK 가 되어야 하나, 명령어를 축약하는 경우에는 편집 내용이 소실될 수 있기 때문이다.
또한, 도 11a에 도시된 명령어 리스트에 대하여, 명령어 저장 서버(130)가 축약 가능 여부를 판단할 때, "insert 'LMNOP'"를 편집 내용으로 하는 제 4 편집 명령어(704) 및 "실행 취소"를 편집 내용으로 하는 제 5 편집 명령어(705)가 서로 매칭되고, 제 6 편집 명령어(706)에 따른 편집 내용이 "재실행"이 아니므로, 제 4 및 제 5 편집 명령어(704, 705)는 축약 가능한 것으로 판단할 수 있다. 이러한 경우, 제 4, 제 5 및 제 6 편집 명령어에 따른 편집의 결과는 QRS가 되고, 이는 명령어를 축약한 경우에도 같아 편집 내용이 소실되지 않을 수 있다. 전술한 명령어 저장 서버의 축약 판단의 기재들은 예시일뿐, 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 둘 이상의 편집 명령어가 제 1, 2 및 3 편집 명령어를 포함하고, 상기 제 2 편집 명령어(132)에 따른 편집의 결과가 상기 제 1 편집 명령어(131)에 따른 편집의 실행 취소이고, 그리고 제 2 편집 명령어 수신 이후에 수신된 상기 제 3 편집 명령어(133)에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 재실행인 경우, 상기 제 2 및 3 편집 명령어(132, 133)가 축약이 가능하다고 판단할 수 있다. 그리고, 상기 명령어 저장 서버(130)는 상기 제 2 및 제 3 편집 명령어(132, 133)를 제거하여 축약 명령어 리스트(750)를 생성할 수 있다.
예를 들어, 명령어 리스트(730)에 도시된 11b와 같이, "Backspace"를 편집내용으로 하는 제 1 편집 명령어(705), "실행 취소"를 편집내용으로 하는 제 2 편집 명령어(706) 및 "재실행"을 편집내용으로 하는 제 3 편집 명령어(707)가 연달아 저장될 수 있다. 이러한 경우, 명령어 저장 서버(130)는 "재실행"를 편집내용으로 하는 제 3 편집 명령어(707)에 따른 편집의 결과가 "실행 취소"를 편집내용으로 하는 제 2 편집 명령어(706)에 따른 편집의 결과의 재실행이므로, 양 편집어에 대한 축약이 가능할 것으로 판단할 수 있다.
그리고, 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 축약 가능한 제 2 및 제 3 편집 명령어(706, 707)를 명령어 리스트(730)에서 제거하여 축약 명령어 리스트(750)를 생성할 수 있다. 따라서, 상기 축약 명령어 리스트(750)는 기존의 명령어 리스트(730)가 포함하는 7개의 편집 명령어보다 두 개 적은 5개의 편집 명령어를 포함할 수 있다. 전술한 명령어 저장 서버의 실행 취소 및 재실행에 대한 편집 명령어 축약 동작은 예시적인 기재일뿐, 본 개시는 이에 제한되지 않는다. 또한, 상기 판단 및 축약 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)가 수행할 수도 있다.
또한, 본 개시의 또 다른 일 실시예에 따른 명령어 저장 서버(130)는 둘 이상의 편집 명령어가 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하는 경우, 상기 둘 이상의 편집 명령어를 축약 가능한 것으로 판단할 수 있다. 그리고 명령어 저장 서버(130)가 축약 명령어 리스트(750)를 생성하는 단계는 상기 둘 이상의 편집 명령어 중 사전 설정된 작업의 시작에 대한 정보를 포함하는 적어도 하나의 편집 명령어를 제거하여 축약 명령어 리스트(750)를 생성할 수 있다.
보다 구체적으로, 여기서 사전 설정된 작업은 멀티 미디어 파일의 삽입에 관련된 작업을 포함할 수 있다. 이러한 멀티 미디어 파일의 삽입에 관련된 작업은 문자 데이터에 비해 용량이 크기 때문에 공동 편집 세션 상에서 작업의 혼선이 유발될 수 있다. 따라서, 상기 작업에 관련된 편집 명령어들은 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하여, 시작과 완료를 명확히 할 수 있다. 여기서 상기 사전 설정된 작업에 대한 시작에 대한 정보는 문서 내에 멀티 미디어 파일이 삽입될 위치, 멀티미디어 파일의 크기 등에 관련된 정보를 포함할 수 있다. 그리고, 사전 설정된 작업의 완료에 대한 정보는 경우에 따라 멀티미디어 파일의 데이터를 포함할 수 있어 작업이 완료된 경우, 상기 시작에 대한 정보가 더 이상 필요하지 않을 수 있다. 따라서, 명령어 저장 서버(130)는 명령어 리스트 상에서 사전 설정된 작업에 관련된 편집 명령어들 중 이미지 파일의 데이터를 포함하는 편집 명령어를 제외한 편집 명령어들을 제거하여 축약 명령어 리스트를 생성할 수 있다.
예를 들어, 사전 설정된 작업이 이미지 삽입이고, 도시된 11c와 같이, 명령어 리스트(730)는 이미지 삽입에 관한 시작 및 완료에 대한 편집 명령어를 포함할 수 있다. 이러한 경우, 상기 명령어 저장 서버(130)는 상기 이미지 삽입 시작 및 이미지 삽입 완료에 대한 편집 명령어가 축약 가능하다고 판단할 수 있다. 따라서 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 상기 이미지 삽입 시작에 해당하는 편집 명령어(708)를 명령어 리스트(730)에서 제거하고, 이미지 파일의 데이터를 포함하는 이미지 삽입 완료에 대한 편집 명령어(709)를 유지하는 축약 명령어 리스트(750)를 생성할 수도 있다.
전술한 예시와는 다른 예시로써, 상기 이미지 삽입 시작 및 완료에 대한 편집 명령어(708, 709)가 이미지 파일의 데이터를 포함하지 않고, 명령어 리스트(730)에 포함된 이미지 파일 데이터에 대한 편집 명령어(미도시)가 상기 이미지 파일 데이터를 포함할 수 있다. 이러한 경우, 명령어 저장 서버(130)는 이미지 삽입 시작 및 완료에 대한 편집 명령어(708, 709)를 제거하는 축약이 가능하다고 판단할 수 있다. 그리고 상기 명령어 저장 서버(130)는 상기 판단에 기초하여, 상기 이미지 삽입 시작 및 완료에 대한 편집 명령어(708, 709)들을 명령어 리스트(730)에서 제거하고, 이미지 파일의 데이터를 포함하는 편집 명령어(미도시)를 유지하는 축약 명령어 리스트(750)를 생성할 수 있다.
따라서, 상기 축약 명령어 리스트(750)는 기존의 명령어 리스트(730)가 포함하는 편집 명령어 중 일부의 편집 명령어로 구성될 수 있다. 전술한 명령어 저장 서버의 사전 설정된 작업에 관련된 편집 명령어 축약 가능여부 판단 및 축약 동작은 예시적인 기재일뿐, 본 개시는 이에 제한되지 않는다. 또한, 상기 판단 및 축약 동작들은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)가 수행할 수 있다.
전술한 바와 같이 본 개시의 일 실시예에 따른 명령어 저장 서버(130) 또는, 다른 일 실시예에 따른 엔진-풀 서버(140)는 명령어 리스트(730)보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트(750)를 생성할 수 있다. 따라서, 본 개시의 일 실시 예에 따라 불필요한 편집 명령어가 제거될 수 있어 서버와 사용자 단말, 서버와 서버간의 통신 트래픽이 감소될 수 있고, 편집 명령어를 전달받은 클라이언트 디바이스에서 병합하여야 할 명령어의 수가 감소하게 되어 클라이언트 디바이스의 연산 부담이 감소하여 성능이 향상될 수 있다.
도 12은 본 개시의 일 실시예에 따른 축약 명령어 리스트를 생성하는 방법을 도시하는 플로우 차트이다.
명령어 전달 서버(120)에서 적어도 두개의 클라이언트를 포함하는 클라이언트 그룹(900)에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계를 포함할 수 있다(S1101)
본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 적어도 하나의 클라이언트로부터 편집 명령어를 수신할 수 있다. 그리고 상기 편집 명령어는 상기 편집 명령어를 송신하는 클라이언트에 대한 클라이언트 정보(731), 상기 편집 명령어에 따른 편집의 결과에 해당하는 편집내용(732) 및 명령어 전달 서버(120)가 편집 명령어를 수신한 시간, 명령어 저장 서버(130)가 편집 명령어를 수신한 시간, 또는 클라이언트가 편집 명령어를 송신한 시간에 대한 정보를 포함하는 시간 정보(733)를 포함할 수 있다.
명령어 저장 서버(130)에서 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성할 수 있다(S1102)
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 명령어 전달 서버(120)로부터 수신한 둘 이상의 편집 명령어들을 수신한 순서에 대응하도록 리스트화 시켜 저장할 수 있다. 상기의 수신한 순서는 편집 명령어에 포함된 시간 정보(733)에 기초할 수도 있다.
명령어 저장 서버(130)에서 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단할 수 있다(S1103)
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어가 포함하는 클라이언트 정보(731), 스택의 범위 및 시간 정보(733) 중 적어도 하나에 기초하여, 상기 둘 이상의 편집 명령어가 축약 가능한지를 판단할 수 있다.
보다 구체적으로, 상기 축약 가능 여부의 판단은 편집 명령어가 포함하는 클라이언트 정보(731)에 기초하여 각각의 동일한 클라이언트로부터 수신한 편집 명령어들에 대해서 개별적으로 수행될 수 있다.
또한, 상기 축약 가능 여부의 판단은 편집 명령어가 적층되어 생성되는 명령어 리스트(730)의 스택에 기초하여, 사전 설정한 일정 스택 범위 안의 편집 명령어들에 대해서 수행될 수도 있다.
마지막으로, 상기 축약 가능 여부의 판단은 명령어 전달 서버(120)가 편집 명령어를 수신한 시간 정보, 명령어 저장 서버(130)가 편집 명령어를 수신한 시간 정보 또는 클라이언트가 편집 명령어를 송신한 시간 정보 중 적어도 하나를 포함하는 편집 명령어의 시간 정보(733)에 기초할 수 있다. 보다 구체적으로, 본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 각각의 편집 명령어 이후 사전 설정된 시간 범위 이내에 수신된 편집 명령어들에 대하여 축약이 가능한지 판단할 수 있다.
전술한 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어들의 축약이 가능한지에 대한 판단의 대상 선정은 예시적인 기재일뿐, 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따라 명령어 리스트에 포함된 둘 이상의 편집 명령어들은 제 1, 제 2 및 제 3 편집 명령어를 포함할 수 있다. 그리고 명령어 저장 서버(130)는 제 1, 제 2 및 제 3 편집 명령어에 따른 편집내용들 간의 관계가 매칭되는지 여부에 기초하여 상기 편집 명령어들이 축약 가능한지 여부를 판단할 수 있다.
보다 구체적으로, 상기 편집내용들 간의 관계는 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 실행 취소인 경우, 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 삭제인 경우, 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 실행 취소이고, 상기 제 2 편집 명령어 수신 이후에 수신된 제 3 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 재실행인 경우, 그리고 제 1, 제 2 및 제 3 편집 명령어 중 둘 이상의 편집 명령어가 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하는 경우를 포함할 수 있다.
전술한 명령어 저장 서버(130)의 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어들이 축약 가능한지에 대한 판단은 예시일뿐, 본 개시는 이에 제한되지 않는다. 또한, 상기 판단은 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)에서 수행될 수도 있다.
명령어 리스트(730)에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 명령어 저장 서버에서 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트(750)를 생성할 수 있다(S1104)
상술한 바와 같이, 본 개시의 일 실시예에 따라 명령어 저장 서버(130) 또는 본 개시의 다른 일 실시예에 따라 엔진-풀 서버(140)가 둘 이상의 편집 명령어들에 대하여 축약이 가능하다고 판단할 수 있다. 또한, 상기 명령어 저장 서버(130) 또는 엔진-풀 서버(140)는 상기 판단에 기초하여, 적어도 하나 이상의 편집 명령어를 명령어 리스트(730) 상에서 제거하는 축약을 통해 편집 명령어의 개수가 적어도 하나 이상 적은 축약 명령어 리스트(750)를 생성할 수 있다.
명령어 저장 서버(130) 또는 엔진-풀 서버(140)는 명령어 리스트에 포함된 제 1, 제 2 및 제 3 편집 명령어들에 따른 편집내용(732)들 간의 관계에 기초하여, 제거될 편집 명령어를 결정할 수 있다.
보다 구체적으로, 명령어 저장 서버(130)는 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 실행 취소인 경우, 상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하는 축약을 통해 축약 명령어 리스트(750)를 생성할 수 있다.
또는, 본 개시의 일 실시예에 따라 명령어 저장 서버(130)는 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 삭제인 경우, 상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하는 축약을 통해 축약 명령어 리스트(750)를 생성할 수 있다.
본 개시의 또 다른 일 실시예에 따른 명령어 저장 서버(130)는 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어에 따른 편집의 실행 취소이고, 상기 제 2 편집 명령어 수신 이후에 수신된 제 3 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 재실행인 경우를 포함할 수 있다. 이러한 경우, 상기 제 2 편집 명령어 및 상기 제 3 편집 명령어를 제거하는 축약을 통해 축약 명령어 리스트(750)를 생성할 수 있다.
마지막으로, 본 개시의 일 실시예로써, 명령어 저장 서버(130)는 명령어 리스트(730)에 포함된 둘 이상의 편집 명령어가 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하는 경우, 둘 이상의 편집 명령어 중 사전 설정된 작업의 시작에 대한 정보를 포함하는 적어도 하나의 편집 명령어를 제거하여 축약 명령어 리스트(750)를 생성할 수도 있다.
따라서, 본 개시의 일 실시 예에 따라 불필요한 편집 명령어가 제거될 수 있어 서버와 사용자 단말, 서버와 서버간의 통신 트래픽이 감소될 수 있고, 편집 명령어를 전달받은 클라이언트 디바이스에서 병합하여야 할 명령어의 수가 감소하게 되어 클라이언트 디바이스의 연산 부담이 감소하여 성능이 향상될 수 있다.
또한, 본 개시의 일 실시에에 따라 엔진-풀 서버(140)는 추가적으로 미리 지정한 조건이 충족되는 경우, 명령어 리스트(730) 또는 축약 명령어 리스트(750) 중 적어도 하나를 명령어 저장 서버(130)로부터 수신할 수 있다. 그리고, 상기 명령어 저장 서버(130)는 상기 명령어 리스트(730) 또는 축약 명령어 리스트(750)의 송신 시점 이후에 수신되는 새로운 편집 명령어들에 대해서 새로운 명령어 리스트를 생성할 수도 있다. 그리고, 상기 명령어 저장 서버(130)는 상기 새로운 명령어 리스트를 축약한 새로운 축약 명령어 리스트를 생성할 수도 있다. 여기서 미리 지정한 조건은 명령어 리스트(730) 상에 저장된 편집 명령어들의 개수, 명령어 리스트의 용량 및 명령어 리스트가 생성된 시점으로부터의 시간 중 적어도 하나에 기초한 조건일 수 있다.
그리고, 상기 엔진-풀 서버(140)는 수신한 명령어 리스트(730) 또는 축약 명령어 리스트(750) 중 적어도 하나에 부분적으로 기초하여, 공동 편집 문서와 관련되는 시드 문서 파일(111)을 갱신한 갱신 시드 문서 파일(112)을 생성할 수 있다.
본 개시의 일 실시예에 따라 엔진-풀 서버(140)는 클라이언트 그룹에 포함되지 않는 추가 클라이언트(910)가 연결된 경우, 상기 추가 클라이언트(910)에게 상기 갱신 시드 문서 파일(112)을 송신할 수 있다. 그리고, 명령어 전달 서버(120)가 상기 추가 클라이언트(910)에게 갱신 시드 문서 파일(112)이 생성된 이후 저장된 추가 편집 명령어로 구성된 추가 명령어 리스트, 또는 추가 명령어 리스트의 편집 명령어 중 일부를 포함하는 축약 추가 명령어 리스트를 송신할 수 있다.
따라서, 추가 클라이언트(910)가 공동 편집 문서를 편집하기 위해 공동 세션 중간에 접속하는 경우에도, 추가 클라이언트(910)는 추가 명령어 리스트, 또는 축약 추가 명령어 리스트 및 갱신된 시드 문서 파일(111)을 기초로 공동 편집에 참여할 수 있다. 또한, 추가 클라이언트(910)가 축약 추가 명령어 리스트를 명령어 저장 서버(130)로부터 수신한 경우, 보다 가벼운 명령어 리스트를 수신함으로써 트래픽 개선 효과 및 빠른 동기화 효과를 얻을 수도 있다.
본 개시의 다른 일 실시예에 따라 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계, 명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계, 상기 명령어 저장 서버에서 엔진-풀 서버로 상기 명령어 리스트를 송신하는 단계, 상기 엔진-풀 서버에서 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계 및 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 엔진-풀 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계를 포함할 수 있다.
상기 방법은 도 12에 기재된 방법과 달리, 명령어 저장 서버(130) 대신 엔진-풀 서버(140)가 둘 이상의 편집 명령어들에 대한 축약이 가능한지 여부를 판단할 수 있다. 그리고 상기 판단에 기초한 축약 또한 상기 엔진-풀 서버가 수행할 수 있다.
보다 구체적으로, 본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 명령어 전달 서버(120)가 수신하는 둘 이상의 편집 명령어들을 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성할 수 있다. 그리고, 상기 명령어 저장 서버(130)는 미리 지정한 기준이 충족되는 경우, 생성한 명령어 리스트(730)를 엔진-풀 서버(140)로 송신할 수 있다. 따라서, 상기 엔진-풀 서버(140)는 수신된 명령어 리스트(730)에 기초하여, 명령어 리스트 상에 포함된 둘 이상의 편집 명령어들의 축약 가능 여부를 판단할 수 있다. 그리고 엔진-풀 서버(140)는 상기 판단에 기초하여 편집 명령어 중 적어도 하나를 제거하는 편집 명령어 축약을 통해 축약 명령어 리스트(750)를 생성할 수 있다.
본 명세서에서, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈 또는 그 2 개의 결합으로 직접 구현될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 그 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC)내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
이상 첨부된 도면을 참조하여 본 개시의 실시예들을 더욱 상세하게 설명하였으나, 본 개시는 반드시 이러한 실시예로 국한되는 것은 아니고, 본 개시의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형실시될 수 있다. 따라서, 본 개시에 개시된 실시예들은 본 개시의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 개시의 기술 사상의 범위가 한정되는 것은 아니다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (14)

  1. 공동 편집 문서를 공유하는 방법에 있어서,
    명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계;
    명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계;
    상기 명령어 저장 서버에서 상기 명령어 리스트의 순서에 기초하여 사전 결정된 스택 범위 안에 저장되고 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계; 및
    상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계;
    를 포함하는,
    공동 편집 문서를 공유하는 방법.
  2. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 둘 이상의 편집 명령어가 제 1 및 제 2 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어-상기 제 1 편집 명령어는 상기 제 2 편집 명령어와 상이함-에 따른 편집의 실행 취소(Undo)인 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고,
    상기 축약 명령어 리스트를 생성하는 단계는,
    상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성하는,
    공동 편집 문서를 공유하는 방법.
  3. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 둘 이상의 편집 명령어가 제 1, 2 및 3 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 실행 취소이고, 그리고 제 2 편집 명령어 수신 이후에 수신된 상기 제 3 편집 명령어에 따른 편집의 결과가 상기 제 1 편집 명령어에 따른 편집의 재실행(Redo)인 경우, 상기 제 2 및 3 편집 명령어가 축약이 가능하다고 판단하고,
    상기 축약 명령어 리스트를 생성하는 단계는,
    상기 제 2 편집 명령어 및 상기 제 3 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성하는,
    공동 편집 문서를 공유하는 방법.
  4. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 둘 이상의 편집 명령어가 제 1 및 제 2 편집 명령어를 포함하고, 상기 제 2 편집 명령어에 따른 편집의 결과가 제 1 편집 명령어-상기 제 1 편집 명령어는 상기 제 2 편집 명령어와 상이함-에 따른 편집의 삭제인 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고,
    상기 축약 명령어 리스트를 생성하는 단계는,
    상기 제 1 편집 명령어 및 상기 제 2 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성하는,
    공동 편집 문서를 공유하는 방법.
  5. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 둘 이상의 편집 명령어가 사전 설정된 작업에 대한 시작 및 완료에 대한 정보를 포함하는 경우, 상기 둘 이상의 편집 명령어가 축약이 가능하다고 판단하고,
    상기 축약 명령어 리스트를 생성하는 단계는,
    상기 둘 이상의 편집 명령어 중 상기 사전 설정된 작업의 시작에 대한 정보를 포함하는 적어도 하나의 편집 명령어를 제거하여 상기 축약 명령어 리스트를 생성하는,
    공동 편집 문서를 공유하는 방법.
  6. 제 5 항에 있어서,
    상기 사전 설정된 작업은,
    멀티미디어 파일의 삽입이고,
    상기 시작에 대한 정보는,
    적어도 상기 멀티미디어 파일의 문서 내의 삽입 위치를 포함하고,
    상기 완료에 대한 정보는,
    적어도 상기 멀티미디어 파일의 데이터를 포함하는,
    공동 편집 문서를 공유하는 방법.
  7. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 수신된 상기 둘 이상의 편집 명령어 중 각각의 클라이언트로부터 수신된 편집 명령어 각각에 대해서 축약 가능 여부를 판단하는,
    공동 편집 문서를 공유하는 방법.
  8. 제 1 항에 있어서,
    상기 축약이 가능한지 여부를 판단하는 단계는,
    상기 명령어 저장 서버가 상기 편집 명령어를 상기 적어도 하나의 클라이언트로부터 수신한 시간에 기초하여 사전 결정된 시간 범위 안에 수신된 상기 둘 이상의 편집 명령어에 대해서 축약 가능 여부를 판단하는,
    공동 편집 문서를 공유하는 방법.
  9. 삭제
  10. 제 1 항에 있어서,
    엔진-풀 서버에서 상기 명령어 저장 서버로부터 상기 명령어 리스트 또는 상기 축약 명령어 리스트를 수신하는 단계; 및
    상기 명령어 리스트 또는 상기 축약 명령어 리스트 중 적어도 하나에 부분적으로 기초하여, 상기 공동 편집 문서와 관련되는 시드 문서 파일을 갱신한 갱신 시드 문서 파일을 생성하는 단계;
    를 더 포함하는,
    공동 편집 문서를 공유하는 방법.
  11. 제 10 항에 있어서,
    상기 클라이언트 그룹에 포함되지 않는 추가 클라이언트가 연결된 경우, 상기 엔진-풀 서버에서 상기 추가 클라이언트에게 상기 갱신 시드 문서 파일을 송신하는 단계; 및
    상기 명령어 전달 서버에서 상기 추가 클라이언트에게 상기 갱신 시드 문서 파일이 생성된 이후 저장된 추가 편집 명령어 중 일부로 구성된 상기 축약 명령어 리스트 또는 상기 명령어 리스트를 송신하는 단계;
    를 더 포함하는,
    공동 편집 문서를 공유하는 방법.
  12. 공동 편집 문서를 공유하는 방법에 있어서,
    명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하는 단계;
    명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하는 단계;
    상기 명령어 저장 서버에서 엔진-풀 서버로 상기 명령어 리스트를 송신하는 단계;
    상기 엔진-풀 서버에서 상기 명령어 리스트의 순서에 기초하여 사전 결정된 스택 범위 안에 저장되고 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하는 단계; 및
    상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 엔진-풀 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는 단계;
    를 포함하는,
    공동 편집 문서를 공유하는 방법.
  13. 하나 이상의 프로세서에 의해 실행되는 복수의 명령들을 포함하는, 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은,
    명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하도록 하기 위한 명령;
    명령어 저장 서버에서 상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하도록 하기 위한 명령;
    상기 명령어 저장 서버에서 상기 명령어 리스트의 순서에 기초하여 사전 결정된 스택 범위 안에 저장되고 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하도록 하기 위한 명령; 및
    상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하도록 하기 위한 명령;
    을 포함하는,
    컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램.
  14. 공동 편집 문서를 공유하는 시스템으로서,
    명령어 전달 서버 및 명령어 저장 서버를 포함하고,
    상기 명령어 전달 서버는,
    적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하는 둘 이상의 편집 명령어를 수신하고, 그리고
    상기 명령어 저장 서버는,
    상기 편집 명령어를 수신한 순서에 대응하도록 저장하여 명령어 리스트를 생성하고, 상기 명령어 리스트의 순서에 기초하여 사전 결정된 스택 범위 안에 저장되고 상기 명령어 리스트에 포함된 상기 둘 이상의 편집 명령어에 대한 축약이 가능한지 여부를 판단하고, 그리고 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어에 대한 축약이 가능하다고 판단될 경우, 상기 명령어 저장 서버에서 상기 명령어 리스트에 포함된 둘 이상의 편집 명령어를 축약하여 상기 명령어 리스트에 포함된 편집 명령어보다 적어도 하나 이상 적은 편집 명령어를 포함하는 축약 명령어 리스트를 생성하는,
    공동 편집 문서를 공유하는 시스템.

KR1020160059781A 2016-05-16 2016-05-16 공동 편집 문서를 공유하는 방법 및 장치 KR101812957B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160059781A KR101812957B1 (ko) 2016-05-16 2016-05-16 공동 편집 문서를 공유하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160059781A KR101812957B1 (ko) 2016-05-16 2016-05-16 공동 편집 문서를 공유하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170129338A KR20170129338A (ko) 2017-11-27
KR101812957B1 true KR101812957B1 (ko) 2017-12-29

Family

ID=60810655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160059781A KR101812957B1 (ko) 2016-05-16 2016-05-16 공동 편집 문서를 공유하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101812957B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501969A (ja) * 2003-08-07 2007-02-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 共同制作電子メール文書を作成するための方法、システム、およびコンピュータ・プログラム(共同制作電子メール)
KR101159504B1 (ko) * 2011-10-14 2012-06-25 주식회사 한글과컴퓨터 단말 장치 및 상기 단말 장치의 문서 공동 편집 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501969A (ja) * 2003-08-07 2007-02-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 共同制作電子メール文書を作成するための方法、システム、およびコンピュータ・プログラム(共同制作電子メール)
KR101159504B1 (ko) * 2011-10-14 2012-06-25 주식회사 한글과컴퓨터 단말 장치 및 상기 단말 장치의 문서 공동 편집 방법

Also Published As

Publication number Publication date
KR20170129338A (ko) 2017-11-27

Similar Documents

Publication Publication Date Title
US20170134495A1 (en) Method and apparatus for sharing collaboratively edited document
US9483357B2 (en) Selective restore from incremental block level backup
US8997041B2 (en) Method of managing script, server performing the same and storage media storing the same
US8347308B2 (en) Information processing apparatus, information processing method, and storage medium
KR101701110B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
US9128784B2 (en) Data transfer using a network clipboard
US8078577B2 (en) Method of bi-directional synchronization of user data
CN109564529B (zh) 基于符号链接的占位符
CN110209642A (zh) 信息处理的方法、装置、服务器及计算机可读介质
US9690796B2 (en) Non-transitory computer-readable media storing file management program, file management apparatus, and file management method
JP2008299478A (ja) データファイル編集システム、データファイル処理プログラム、データファイル利用プログラム、データファイル利用システム、処理サーバ、利用クライアント
US20130046935A1 (en) Shared copy cache across networked devices
US20200104404A1 (en) Seamless migration of distributed systems
KR101822401B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
US20180254977A1 (en) Coordinated content distribution over network
CN112685091A (zh) 基于大数据的业务请求处理方法、装置、设备和介质
CN104052626A (zh) 配置网元数据的方法、装置和系统
KR20120027219A (ko) 오퍼레이팅 시스템 상태의 캡처링 및 로딩
KR101812957B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
CN113760313A (zh) 云平台的升级方法、装置、设备、云平台系统及存储介质
CN114501117B (zh) 一种多平台消息同步合并方法、系统、电子设备和存储介质
KR101858970B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
KR101954061B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
JP4829368B1 (ja) ファイル処理プログラム、装置及び方法
US20200137155A1 (en) System and method for peer-to-peer communication in partial mesh network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant