KR102308015B1 - 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템 - Google Patents

웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템 Download PDF

Info

Publication number
KR102308015B1
KR102308015B1 KR1020190062224A KR20190062224A KR102308015B1 KR 102308015 B1 KR102308015 B1 KR 102308015B1 KR 1020190062224 A KR1020190062224 A KR 1020190062224A KR 20190062224 A KR20190062224 A KR 20190062224A KR 102308015 B1 KR102308015 B1 KR 102308015B1
Authority
KR
South Korea
Prior art keywords
editing
joint
area
editing area
user
Prior art date
Application number
KR1020190062224A
Other languages
English (en)
Other versions
KR20200136561A (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 KR1020190062224A priority Critical patent/KR102308015B1/ko
Publication of KR20200136561A publication Critical patent/KR20200136561A/ko
Application granted granted Critical
Publication of KR102308015B1 publication Critical patent/KR102308015B1/ko

Links

Images

Classifications

    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Abstract

일 실시예에 따른 컴퓨터로 구현되는 공동편집 지원 서버에 의해 수행되는 공동편집 지원 방법은, 웹 브라우저의 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 단계; 및 상기 수신된 편집 영역에 대한 플러그인을 통해 상기 편집 영역을 공동편집 영역으로 변환하는 단계를 포함할 수 있다.

Description

웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템{METHOD AND SYSTEM FOR SUPPORTING COLLABORATIVE EDITING BY HOOKING THE EDITING AREA ON THE WEB}
아래의 설명은 웹 상에서 에디팅 영역에 대하여 공동편집을 지원하기 위한 기술에 관한 것이다.
컴퓨터나 스마트폰 또는 태블릿 PC 등과 같은 전자 단말 장치가 널리 보급됨에 따라 이러한 전자 기기를 이용하여 전자 문서를 열람, 작성, 편집할 수 있도록 하는 다양한 종류의 전자 문서 관련 프로그램들이 출시되고 있다. 이러한 전자 문서 관련 프로그램들로는 기본적인 문서의 작성, 편집 등을 지원하는 워드프로세서, 데이터의 입력, 산술연산, 데이터 관리를 보조하는 스프레드시트, 발표자의 발표를 보조하기 위한 프레젠테이션 프로그램들이 있다. 기존에는 사용자가 전자 단말 장치를 활용해서 전자 문서를 열람, 작성, 편집하기 위해서는 전자 단말 장치에 직접 앞서 언급한 전자 문서 관련 프로그램들을 설치한 후 전자 문서 관련 프로그램들을 구동시켜 전자 문서를 열람하거나 작성 및 편집해야 했었다.
최근에는 다수의 유저들이 서버 상에 저장되어 있는 하나의 전자 문서에 대해 실시간으로 동시 편집이 가능하도록 하는 문서 공동편집 기술이 도입되고 있다. 일례로, 한국등록특허 제10-1159504호는 단말 장치 및 상기 단말 장치의 문서 공동 편집 방법에 관한 것으로, 다수의 단말 장치들이 문서의 공동 편집을 수행할 때, 어느 하나의 단말 장치가 공동 편집 세션을 구성하여 나머지 단말 장치들과 문서의 공동 편집을 수행할 수 있도록 하는 기술을 개시하고 있다. 그러나, 이러한 공동편집 기능은 문서에 대한 공동편집을 지원하기 위하여 특정 서비스 페이지를 방문해야 하거나 특정 에디팅 영역에서만 공동편집을 지원하기 때문에 웹의 일반적인 페이지에서 공동편집이 지원되기 힘들다.
웹의 편집 영역을 플러그인 형태로 후킹하여 일반적인 웹 상에서 공동편집을 지원하는 방법 및 시스템을 제공할 수 있다.
컴퓨터로 구현되는 공동편집 지원 서버에 의해 수행되는 공동편집 지원 방법은, 웹 브라우저의 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 단계; 및 상기 수신된 편집 영역에 대한 플러그인을 통해 상기 편집 영역을 공동편집 영역으로 변환하는 단계를 포함할 수 있다.
상기 공동편집을 위한 요청을 수신하는 단계는, 상기 편집 영역에 존재하는 편집 데이터를 마크업 언어(Markup Language) 기반의 데이터로 변환하고, 상기 변환된 마크업 언어 기반의 데이터를 저장하는 단계를 포함하고, 상기 공동편집 영역으로 변환하는 단계는, 상기 저장된 마크업 언어 기반의 데이터에서 상기 플러그인에 기반한 후킹을 통해 상기 편집 영역의 속성 정보를 숨기고, 상기 숨겨진 속성 정보에 공동편집을 위한 코드를 삽입하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 변환된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 변환된 공동편집 영역 또는 결과에 해당하는 URI, 또는 편집 사용자 정보에 기초하여 공동편집 세션을 생성하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 특정 서비스에서 제공하는 계정 정보 또는 미리 정의된 버디 리스트에 기초하여 상기 공동편집에 참여하는 사용자를 식별하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 생성된 공동편집 세션에 기반하여 공동편집을 위한 데이터 타입과 사용자의 참여 여부를 추적하는 데이터 타입에 따른 공동편집 서비스를 제공하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 상기 공동편집에 참여한 사용자의 정보가 기입되고, 상기 공동편집에 참여한 사용자가 공동편집을 종료 또는 이탈함에 따라 상기 기입된 사용자의 정보가 삭제되는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 변환된 공동편집 영역에서 발생한 공동편집 작업들을 상기 공동편집을 위한 데이터 타입에 기반한 오퍼레이션으로 취합하고, 상기 취합된 오퍼레이션을 교환하여 데이터를 상호 동기화하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 사용자별로 상기 생성된 공동편집에 대한 기록들을 서버에 누적하여 상기 플러그인 또는 특정 URL을 통하여 히스토리 목록을 제공하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 계정 정보에 기초하여 연동된 초대 목록으로부터 적어도 하나 이상의 사용자를 공동편집에 초대하는 단계를 포함할 수 있다.
상기 공동편집 영역으로 변환하는 단계는, 상기 계정 정보에 기초하여 공동편집이 가능한 편집 데이터가 연동되어 편집을 실행하고, 상기 연동된 편집 데이터에 상기 계정 정보에 존재하는 사용자가 접속됨에 따라 공동편집을 실행하는 단계를 포함할 수 있다.
컴퓨터로 구현되는 공동편집 지원 서버에 의해 수행되는 공동편집 지원 방법을 실행시키기 위해 컴퓨터 판독 가능한 저장매체에 저장된 컴퓨터 프로그램은, 웹 브라우저의 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 단계; 및 상기 수신된 편집 영역에 대한 플러그인을 통해 상기 편집 영역을 공동편집 영역으로 변환하는 단계를 포함할 수 있다.
컴퓨터로 구현되는 공동편집 지원 서버는, 웹 브라우저의 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 수신부; 및 상기 수신된 편집 영역에 대한 플러그인을 통해 상기 편집 영역을 공동편집 영역으로 변환하는 변환부를 포함할 수 있다.
상기 수신부는, 상기 편집 영역에 존재하는 편집 데이터를 마크업 언어(Markup Language) 기반의 데이터로 변환하고, 상기 변환된 마크업 언어 기반의 데이터를 저장하는 것을 포함하고, 상기 변환부는, 상기 저장된 마크업 언어 기반의 데이터에서 상기 플러그인에 기반한 후킹을 통해 상기 편집 영역의 속성 정보를 숨기고, 상기 숨겨진 속성 정보에 공동편집을 위한 코드를 삽입할 수 있다.
상기 변환부는, 상기 변환된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원하고, 상기 변환된 공동편집 영역 또는 결과에 해당하는 URI, 또는 편집 사용자 정보에 기초하여 공동편집 세션을 생성할 수 있다.
상기 변환부는, 상기 생성된 공동편집 세션에 기반하여 공동편집을 위한 데이터 타입과 사용자의 참여 여부를 추적하는 데이터 타입에 따른 공동편집 서비스를 제공할 수 있다.
상기 변환부는, 상기 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 상기 공동편집에 참여한 사용자의 정보가 기입되고, 상기 공동편집에 참여한 사용자가 공동편집을 종료 또는 이탈함에 따라 상기 기입된 사용자의 정보가 삭제될 수 있다.
상기 변환부는, 상기 변환된 공동편집 영역에서 발생한 공동편집 데이터를 상기 공동편집을 위한 데이터 타입에 기반한 오퍼레이션으로 취합하고, 상기 취합된 오퍼레이션을 교환하여 데이터를 상호 동기화할 수 있다.
상기 변환부는, 사용자별로 상기 생성된 공동편집에 대한 기록들을 서버에 누적하여 상기 플러그인 또는 특정 URL을 통하여 히스토리 목록을 제공할 수 있다.
상기 변환부는, 특정 서비스에서 제공하는 계정 정보 또는 미리 정의된 버디 리스트에 기초하여 상기 공동편집에 참여하는 사용자를 식별할 수 있다.
웹의 편집 영역에서 플러그인 형태로 후킹함에 따라 일반적인 웹에서 공동편집 기능을 제공할 수 있다.
일반적인 웹에서 공동편집이 가능한 공동편집 기능을 제공하기 때문에 언제 어디서나 간편하게 공동편집을 수행할 수 있다.
도 1은 일 실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 일 실시예에 따른 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 일 실시예에 따른 서버의 프로세서가 포함할 수 있는 구성 요소의 예를 도시한 블록도이다.
도 4는 일 실시예에 따른 서버에서 수행되는 웹 상에서 공동편집을 지원하는 방법을 설명하기 위한 흐름도이다.
도 5는 일 실시예에 있어서, 편집 영역을 후킹하여 공동편집 영역을 제공하는 것을 설명하기 위한 예이다.
도 6 및 도 7은 일 실시예에 있어서, 공동편집 영역을 통하여 다수의 사용자가 편집을 수행하는 것을 설명하기 위한 예이다.
도 8은 일 실시예에 있어서, 웹 페이지 내에서 공동편집과 관련된 데이터를 히스토리로 제공하는 것을 설명하기 위한 예이다.
도9는 일 실시예에 있어서, 웹 페이지 내에서 공동편집을 위한 사용자를 초대하는 것을 설명하기 위한 예이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(110)은 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있다. 실시예에서는 전자 기기는 클라이언트일 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
일례로, 서버(160)는 네트워크(170)를 통해 접속한 전자 기기 1(110)로 어플리케이션의 설치를 위한 파일을 제공할 수 있다. 이 경우 전자 기기 1(110)은 서버(160)로부터 제공된 파일을 이용하여 어플리케이션을 설치할 수 있다. 또한 전자 기기 1(110)이 포함하는 운영체제(Operating System, OS) 및 적어도 하나의 프로그램(일례로 브라우저나 상기 설치된 어플리케이션)의 제어에 따라 서버(150)에 접속하여 서버(150)가 제공하는 서비스나 컨텐츠를 제공받을 수 있다. 예를 들어, 전자 기기 1(110)이 어플리케이션의 제어에 따라 네트워크(170)를 통해 서비스 요청 메시지를 서버(150)로 전송하면, 서버(150)는 서비스 요청 메시지에 대응하는 코드를 전자 기기 1(110)로 전송할 수 있고, 전자 기기 1(110)은 어플리케이션의 제어에 따라 코드에 따른 화면을 구성하여 표시함으로써 사용자에게 컨텐츠를 제공할 수 있다.
도 2는 일 실시예에 따른 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 2에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 하나의 서버에 대한 예로서 서버(150)의 내부 구성을 설명한다. 다른 전자 기기들(120, 130, 140)이나 서버(160)뿐만 아니라 도 1을 통해 설명한 네트워크 환경에 포함될 수 있는 또 다른 전자 기기들이나 또 다른 서버들에도 동일한 또는 유사한 내부 구성요소들이 적용될 수 있다. 일례로, 서버(150)는 인터렉티브 노선도를 위한 정보 제공 서버를 의미할 수 있다.
전자 기기 1(110)과 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 상술한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 컨텐츠에 대한 스트리밍 서비스 요청)이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(214, 224)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(212)는 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
실시예에서는 웹에서 편집 영역을 플러그인 형태(예를 들면, 크롬 익스텐션)로 후킹하는 방식으로 공동편집 기능을 제공하는 방법 및 시스템에 관한 것으로, 웹에서 제공되는 편집 영역을 숨기고, 숨겨진 편집 영역에 새로운 공동편집 영역이 추가되는 것으로, 웹의 특정 컴포넌트를 다른 것으로 대체하여 언제 어디서나 공동편집이 가능하도록 하는 기술에 관한 것이다. 종래의 전용 편집 에디터에 공동편집 기능을 추가하는 방식과는 달리, 실시예에 따른 공동편집 지원 시스템은 웹 내의 일반적인 편집 영역을 공동편집이 가능한 편집 영역으로 교체하는 방식이 적용될 수 있다.
도 3은 일 실시예에 따른 서버의 프로세서가 포함할 수 있는 구성 요소의 예를 도시한 블록도이고, 도 4는 일 실시예에 따른 서버에서 수행되는 웹 상에서 공동편집을 지원하는 방법을 설명하기 위한 흐름도이다.
서버의 프로세서(222)는 수신부(310) 및 변환부(320)를 포함할 수 있다. 이러한 프로세서(222)의 구성요소들은 서버에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서(222)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 프로세서(222) 및 프로세서(222)의 구성요소들은 도 4의 수행되는 웹 상에서 공동편집을 지원하는 방법이 포함하는 단계들(S410 내지 S420)을 수행하도록 서버를 제어할 수 있다. 이때, 프로세서(222) 및 프로세서(222)의 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
프로세서(222)는 상에서 공동편집을 지원하는 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 서버에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 서버를 제어할 수 있다. 이때, 프로세서(222) 및 프로세서(222)가 포함하는 수신부(310) 및 변환부(320) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(S410 내지 S420)을 실행하기 위한 프로세서(222)의 서로 다른 기능적 표현들일 수 있다.
단계(S410)에서 수신부(310)는 웹 브라우저의 편집 영역으로부터 공동편집을 위한 접근 요청을 수신할 수 있다. 수신부(310)는 편집 영역에 존재하는 편집 데이터를 마크업 언어(Markup Language) 기반의 데이터로 변환하고, 변환된 마크업 언어 기반의 데이터를 저장할 수 있다. 이때, 편집 영역은 텍스트 영역, 텍스트 이외의 캔버스를 포함하는 다른 컨텐츠 영역을 포함할 수 있다. 이하에서는, 설명의 이해를 돕기 위하여 편집 영역이 텍스트 영역이라고 가정하여 설명하기로 한다.
단계(S420)에서 변환부(320)는 수신된 편집 영역에 대한 플러그인을 통해 편집 영역을 공동편집 영역으로 변환할 수 있다. 변환부(320)는 저장된 마크업 언어 기반의 데이터에서 플러그인에 기반한 후킹을 통해 편집 영역의 속성 정보를 숨기고, 숨겨진 속성 정보에 공동편집을 위한 코드를 삽입할 수 있다. 변환부(320)는 변환된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원할 수 있다.
도 5를 참고하면, 편집 영역을 후킹하여 공동편집 영역을 제공하는 것을 설명하기 위한 예이다. 예를 들면, 사용자가 편집 영역(500)에서 편집을 할 수 있다. 변환부(320)는 사용자로부터 편집 영역(500)에서 공동편집을 위한 유저 인터페이스가 선택됨에 따라 편집 영역(500)을 공동편집 영역(510)으로 변환할 수 있다. 구체적으로, 변환부(320)는 마크업 언어 중 하나인 HTML로 구성된 편집 영역의 데이터에 대하여 편집 영역(500)의 속성 정보를 숨기고, 숨겨진 속성 정보의 일부분에 공동편집을 위한 코드를 삽입할 수 있다. 도 5에서는 마크업 언어를 HTML로 예를 들었으나, 이에 한정되는 것은 아니다. 변환부(320)는 브라우저 플러그인으로 웹 페이지의 편집 영역(500)을 숨기고 공동편집 코드를 삽입하여 공동편집을 가능하게 하는 공동편집 영역(510)을 제공할 수 있다. 이때, 공동편집 영역은 편집 영역을 숨기고 새로운 공동편집 영역이 추가되는 형태로 웹 내에서 언제 어디서나 공동편집이 가능하도록 제공할 수 있다. 이러한 공동편집 영역은 예를 들면, 스프레드 시트, 체크 박스, 인풋 필드, 폼 영역의 입력을 받은 웹 페이지 내에서 편집이 되는 영역, 입력을 받는 도구라면 모두 적용될 수 있다.
변환부(320)는 최초로 공동편집이 시작됨에 따라 변환된 공동편집 영역 또는 결과에 해당하는 URI에 기초하여 공동편집 세션을 생성할 수 있다. 예를 들면, 게시판 서비스에서 새로운 포스팅을 편집하여 제출(submit)이 끝나면 새로운 포스팅에 결과에 해당하는 URI에 기초하여 공동편집 데이터타입이 생성되고 이 후 이 URI의 포스팅을 수정할 때 공동편집 세션이 생성되어 모든 사용자(USER)가 참여하도록 할 수 있다. 다시 말해서, 사용자 A가 특정 게시판의 에디팅 영역을 편집하여 제출(submit)하면 생성된 포스팅의 URI가 세션의 접근자가 되어, 다른 유저 B, C 가 저장된 글을 편집하면 공동 편집 영역에 접근할 수 있다. 또는 사용자에 의하여 공동편집 영역에 대한 직접적으로 공동세션이 생성될 수도 있다. 예를 들면, 가령, 유저 a가 A 사이트에 들어가서 textArea에 포커스를 잡으면 플러그인이 제공하는 버튼 등을 통해서 명시적으로 세션을 생성하고, (A 사이트 URI+user a)의 결합으로 세션을 식별(identify)하도록 하고 명시적으로 초대(invite)하거나 플러그인을 통한 리스트 제공으로 편집에 참여하도록 제공될 수도 있다.
도 6을 참고하면, 공동편집 영역(510)을 통하여 복수의 사용자가 편집을 수행하는 것을 설명하기 위한 예이다. 변환부(320)는 변환된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원할 수 있다. 사용자는 전자 기기에서 공동편집 에디터를 이용하여 공동편집을 수행할 수 있다. 이때, 사용자의 편집 영역이 공동편집 에디터와 동기화되기 때문에 사용자는 편집 영역을 이용하여 공동편집을 수행하게 된다. 이러한 공동편집 에디터는 편집 영역이 변환된 공동편집 영역을 이용하여 공동편집을 수행하도록 제공하기 때문에 별도의 편집 방법을 습득하지 않아도, 편집 영역에서 편집하는 것과 동일한 방식으로 편집할 수 있어 간편하다.
공동편집을 위해 공동편집 영역(510)에 참여하는 방법은 다양하게 존재할 수 있다. 일례로, 편집 영역에 기반하여 공동세션을 생성하고 있는 어떤 사용자가 다른 사용자들에게 공동세션에 접속할 수 있도록 초대함으로써 공동편집 영역에 접근하도록 하여, 다른 사용자들이 공동편집 영역에서 공동편집을 수행할 수 있도록 할 수 있다. 다른 예로서, 사용자로부터 입력된 공공편집을 위한 명령에 기초하여 공동편집 영역에 참여될 수 있다. 사용자로부터 웹 페이지에서 제공되는 공동편집과 관련된 목록에서 선택된 공동편집 영역이 실행될 수 있다. 이때, 공동편집과 관련된 목록은 현재 공동편집 중인 공동편집 영역, 이미 공동편집된 공동편집 영역이 해당될 수 있다. 또 다른 예로서, 사용자로부터 공동편집 영역이 탐색될 수 있고, 탐색된 공동편집 영역 중 공동편집을 수행하기 위하여 선택된 공통편집 영역에 참여될 수 있다.
도 6에 도시된 바와 같이, 공동편집 영역(510)에 복수의 사용자가 편집 데이터를 입력할 수 있다. 예를 들면, 두 명의 사용자 각각이 텍스트 데이터(610, 620)를 입력할 수 있다. 제1 사용자가 텍스트를 입력함과 동시에 제2 사용자가 텍스트를 입력할 수 있다. 이때, 편집 데이터는 데이터를 삭제, 입력, 수정 등을 수행하는 것을 의미할 수 있다. 편집 영역(500)을 통하여 오직 사용자만이 단독으로 텍스트, 그림 등의 편집이 수행될 수 있었으나, 편집 영역(500)이 변환된 공동편집 영역(510)을 통하여 사용자 이외의 적어도 하나 이상의 사용자가 공동편집에 참여할 수 있을 뿐만 아니라 동시에 다수의 사용자에 의하여 공동편집이 수행될 수 있다. 변환부(320)는 공동편집 영역(510)에 복수의 사용자로부터 입력된 편집 데이터를 공동편집 영역(510)에 표시할 수 있다. 변환부(320)는 복수의 사용자에 의하여 편집되는 편집 데이터를 실시간으로 공동편집 영역에 표시할 수 있다. 공동편집 영역(510)에서 편집된 데이터가 업데이트될 수 있다.
이때, 변환부(320)는 복수의 사용자 각각의 편집 데이터를 공동편집 영역(510)에 표시하기 위하여 데이터 동기화를 수행할 수 있다. 변환부(320)는 공동편집 세션에 기반하여 공동편집을 위한 데이터 타입과 사용자의 참여 여부를 추적하는 데이터 타입에 따른 공동편집 서비스를 제공할 수 있다. 변환부(320)는 사용자로부터 공동편집 영역에서 편집 데이터를 공동 편집을 위한 데이터 타입의 내용과 일치시키고 이후 편집 작업들을 오퍼레이션 형태로 취합할 수 있다. 또한, 변환부(320)는 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 서버가 자동으로 공동편집에 사용자가 참여하면 사용자의 정보를 기입하고, 공동편집에 참여한 사용자가 공동편집을 종료 또는 이탈함에 따라 기입된 사용자의 정보가 삭제될 수 있다. 이때, 변환부(320)는 사용자의 참석 여부를 추적하는 데이터 타입의 형태를 키-벨류(key-value)에 기반한 맵(map) 형태로 구성하여 현재 공동편집에 참여하고 있는 사용자를 추적할 수 있다.
구체적으로, 변환부(320)는 공동편집 영역에서 발생한 편집 데이터를 공동 편집 영역에서 발생한 데이터 타입에 기초하여 오퍼레이션으로 취합하고 공동편집을 위한 데이터 타입에 기반한 오퍼레이션으로 취합하고, 취합된 오퍼레이션들을 교환하여 데이터를 동기화할 수 있다. 사용자 각각은 자신이 로컬에 존재하는 데이터 타입의 오퍼레이션들을 서버로 전달하고, 서버로부터 다른 사용자들의 오퍼레이션들을 전달받을 수 있다. 변환부(320)는 다른 사용자들의 오퍼레이션을 자신의 로컬 데이터 타입에 적용하고 데이터 타입이 그 결과를 로컬의 공동편집 영역에 호환되는 포맷으로 변환되어 공동편집 영역을 제공하는 에디터에 적용하여 일관성을 유지할 수 있다. 일례로, 한국공개특허 제 10-2018-0113724호는 서버 간에 오퍼레이션을 교환(푸시(push)/풀(pull)) 하도록 함으로써 동시에 발생한 오퍼레이션을 고려하여 상충 문제를 해결하고, 여러 전자 기기의 변경 사항을 고려하여 모든 전자 기기가 같은 데이터 타입의 상태를 가지도록 하는 기술이 개시되어 있다. 오퍼레이션과 동기화되는 일관된 데이터 타입의 특성으로 인하여 전자 기기에 복제된 데이터 타입을 오퍼레이션과 동기화할 수 있게 된다. 변화부(320)는 이러한 데이터 동기화 기술에 기초하여 공동편집과 관련된 변경사항을 오퍼레이션 형태로 취합하여 동기화할 수 있다. 변환부(320)는 전자 기기와 데이터 타입의 오퍼레이션으로 데이터 동기화를 수행할 수 있다.
도 7을 참고하면, 공동편집 영역(510)을 통하여 복수의 사용자가 편집을 수행하는 것을 설명하기 위한 다른 예이다. 일례로, 복수의 사용자로부터 공동편집 영역(510)에 주간보고가 입력될 수 있다. 공동편집 영역(510)에 복수의 사용자로부터 입력되는 편집 데이터가 입력됨과 동시에, 입력된 편집 데이터가 표시될 수 있다. 이때, 변환부(320)는 사내 계정에 등록된 계정 정보에 기초하여 공동편집에 참여된 사용자의 참여 여부를 판단할 수 있다. 예를 들면, 변환부(320)는 공동편집 영역(510)에 텍스트 데이터가 입력되는 위치에 대응하여 커서(710)를 생성할 수 있다. 변환부(320)는 공동편집 영역(510)에 참여된 사용자 또는 사용자의 수를 식별함에 따라 텍스트 데이터가 입력되는 위치에 대응하여 커서(710)를 다르게 표시할 수 있다. 공동편집 영역(510)에 표시된 커서(710)가 사용자마다 다른 색 또는 다른 모양으로 표시될 수 있다. 공동편집 영역(510)을 통하여 텍스트 데이터, 이미지 데이터, 영상 데이터를 편집할 수 있을 뿐만 아니라, 텍스트와 이미지가 혼합된 형태의 파일이 첨부될 수도 있다. 이외에도 공동편집 영역(510)을 통하여 다양한 형태의 데이터가 공동편집될 수 있다.
도 8을 참고하면, 웹 페이지 내에서 공동편집과 관련된 데이터를 히스토리로 제공하는 것을 설명하기 위한 예이다. 도 8에 도시된 바와 같이, 에디팅 영역을 후킹하여 공동편집 영역을 제공하고 편집되는 과정이 서버를 통해 동기화하고 저장되기 때문에 사용자가 웹 이곳 저곳에서 작성한 글들을 한곳에서 확인할 수 있다. 종래의 기술이 웹에서 "본 것"을 메모와 함께 한 곳에서 모으는 것이었다면, 실시예에서는 사용자가 "작성한 것"을 한 곳에서 볼 수 있도록 한다는 점이다. 변환부(320)는 웹 페이지(800) 내에서 편집 또는 공동편집이 수행된 편집 데이터를 목록화할 수 있다. 예를 들면, 변환부(320)는 웹에서 제공되는 서비스와 연동하여 웹 페이지 내에서 편집된 편집 데이터를 불러와 공동편집을 위한 편집데이터 목록으로 생성할 수 있고, 공동편집된 편집 데이터를 목록으로 생성할 수 있다. 구체적으로, 변환부(320)는 웹에서 제공되는 서비스에 등록된 계정 정보에 기초하여 사용자를 식별하여 사용자로들부터의 편집 데이터를 공동편집을 위한 편집데이터 목록으로 생성할 수도 있다. 변환부(320)는 웹 페이지(800) 내에서 편집 또는 공동편집이 수행된 편집 데이터에 대한 편집 데이터명, 참여자 이름을 표시할 수 있다. 변환부(320)는 편집 데이터가 현재 공동편집 되고 있는지 유무를 함께 표시할 수 있다. 변환부(320)는 공동편집이 수행된 편집 데이터를 다시 편집할 수 있는 유저 인터페이스(810, 811, 812)를 제공할 수 있다. 예를 들면, 사용자는 웹 페이지(800) 내에서 공동편집이 수행된 편집 데이터에 대한 목록에 기초하여 유저 인터페이스(810, 811, 812)를 선택함에 따라 공동편집 영역에 접속되어 편집 데이터를 편집, 삭제할 수 있다.
도9을 참고하면, 웹 페이지(800) 내에서 공동편집을 위한 사용자를 초대하는 것을 설명하기 위한 예이다. 예를 들면, 웹 페이지(800)는 특정 서비스(예를 들면, 회사 조직, 카페 등)의 계정 정보를 제공하거나, 미리 정해진 버디리스트 등을 통해 공동편집에 사용자를 초대하도록 제공할 수 있다. 변환부(320)는 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 공동편집에 참여한 사용자의 정보가 기입되고, 공동편집에 참여한 사용자가 공동편집을 종료함에 따라 기입된 사용자의 정보가 삭제될 수 있다. 변환부(320)는 웹 페이지(800) 내에서 공동편집에 대한 기록들을 서버에 누적하여 플러그인 또는 URL을 통하여 히스토리 목록을 제공할 수 있다. 예를 들면, 사용자는 공동편집이 수행된 편집데이터에 대한 목록 중 하나의 편집 데이터를 선택한 후, 히스토리에서 제공된 사용자를 선택하여 공동편집에 사용자를 참여시킬 수도 있다.
변환부(320)는 사용자의 계정 정보가 존재하는지 여부를 판단할 수 있다. 변환부(320)는 사용자의 계정 정보가 존재하지 않을 경우에도, 사용자들의 공동편집 영역에 대한 접근 제한이 없다면 자유롭게 공동영역의 편집이 수행될 수 있다. 이때, 사용자의 계정 정보 기반이 아닌 익명의 다수 사용자들이 공동 참여할 경우, 어떤 사용자가 공동편집을 수행하는지 알 수 없다.
다른 예로서, 변환부(320)는 특정 서비스에 등록된 사용자의 계정 정보가 존재할 경우, 생성된 공동편집 세션을 통하여 공동편집에 참여된 사용자의 참여 여부를 확인할 수 있다. 사용자로부터 특정 서비스 또는 공동편집 에디터에 계정 정보(예를 들면, 아이디 및 패스워드)가 등록될 수 있다. 특정 서비스는 예를 들면, 검색 서비스(검색 엔진), SNS, 컨텐츠 공유 서비스 등 웹 페이지를 통하여 제공되는 서비스일 수 있다. 이러한 특정 서비스는 웹 페이지를 통해 제공되기 때문에 공동편집 에디터와 연동될 수 있다. 변환부(320)는 특정 서비스에 존재하는 사용자의 계정 정보가 존재할 경우, 생성된 공동편집 세션을 통하여 공동편집에 참여된 사용자의 참여 여부를 확인할 수 있다. 예를 들면, 변환부(320)는 특정 서비스에 등록 또는 로그인된 사용자의 계정 정보에 기초하여 공동편집에 참여하고 있는 사용자의 참여 여부를 확인할 수 있다. 변환부(320)는 특정 서비스에 존재하는 사용자의 계정 정보와 공동편집 세션에서 공동편집에 참여된 사용자의 식별 정보를 비교함에 따라 사용자의 정보를 식별할 수 있다. 또한, 특정 서비스의 예로서, 변환부(320)는 사내 계정에 등록 또는 로그인된 사용자의 계정 정보에 기초하여 공동편집에 참여된 사용자의 참여 여부를 판단할 수 있다. 이때, 사용자의 참여 여부를 판단하기 위하여 사내 계정뿐만 아니라 외부 계정 체계로 전환될 수도 있다.
변환부(320)는 계정 정보에 기반한 사용자의 정보를 통하여 공동편집에 사용자를 초대할 수 있다. 예를 들면, 변환부(320)는 웹 페이지(800)를 통하여 사용자의 정보를 목록(910)으로 제공함에 따라 공동편집에 사용자를 초대할 수 있다. 또는, 사용자로부터 목록(910)을 통하여 다른 사용자가 검색/선택될 수 있고, 검색/선택된 다른 사용자가 공동편집 영역에 초대될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 컴퓨터로 구현되는 공동편집 지원 서버에 의해 수행되는 공동편집 지원 방법에 있어서,
    웹 브라우저의 웹 페이지 내에서 제공되는 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 단계; 및
    상기 접근 요청에 따라 상기 편집 영역에 대한 플러그인을 실행하여, 상기 플러그인에 기반한 후킹을 통해 소스 코드 내에서 상기 편집 영역과 연관된 엘리먼트에 해당하는 코드를 숨기고 상기 공동편집을 위한 코드를 삽입함으로써 상기 웹 페이지 내의 상기 편집 영역을 대체하여 공동편집 영역을 제공하는 단계
    를 포함하는 공동편집 지원 방법.
  2. 제1항에 있어서,
    상기 공동편집을 위한 요청을 수신하는 단계는,
    상기 편집 영역에 존재하는 편집 데이터를 마크업 언어(Markup Language) 기반의 데이터로 변환하고, 상기 변환된 마크업 언어 기반의 데이터를 저장하는 단계
    를 포함하는 공동편집 지원 방법.
  3. 제1항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 제공된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원하는 단계
    를 포함하는 공동편집 지원 방법.
  4. 제3항에 있어서,
    상기 공동편집 영역을 통한 포스팅의 작성 및 제출 후 상기 포스팅의 URI에 기초하여 상기 공동편집 영역에 대응하는 공동편집 세션이 생성되고,
    상기 URI는 상기 공동편집 세션에 대해 다른 사용자가 접근하기 위한 접근자가 되는 공동편집 지원 방법.
  5. 제4항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    특정 서비스에서 제공하는 계정 정보 또는 미리 정의된 버디 리스트에 기초하여 상기 공동편집에 참여하는 사용자를 식별하는 단계
    를 포함하는 공동편집 지원 방법.
  6. 제4항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 공동편집 세션에 기반하여 공동편집을 위한 데이터 타입과 사용자의 참여 여부를 추적하는 데이터 타입에 따른 공동편집 서비스를 제공하는 단계
    를 포함하는 공동편집 지원 방법.
  7. 제6항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 상기 공동편집에 참여한 사용자의 정보를 기입하고, 상기 공동편집에 참여한 사용자가 공동편집을 종료 또는 이탈함에 따라 상기 기입된 사용자의 정보가 삭제되는 단계
    를 포함하는 공동편집 지원 방법.
  8. 제4항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 공동편집 영역에서 발생한 공동편집 작업들을 상기 공동편집을 위한 데이터 타입에 기반한 오퍼레이션으로 취합하고, 상기 취합된 오퍼레이션을 교환하여 데이터를 상호 동기화하는 단계
    를 포함하는 공동편집 지원 방법.
  9. 제4항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    사용자로별로 상기 생성된 공동편집에 대한 기록들을 서버에 누적하여 플러그인 또는 특정 URL을 통하여 히스토리 목록으로 제공하는 단계
    를 포함하는 공동편집 지원 방법.
  10. 제5항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 계정 정보에 기초하여 연동된 초대 목록으로부터 적어도 하나 이상의 사용자를 공동편집에 초대하는 단계
    를 포함하는 공동편집 지원 방법.
  11. 제10항에 있어서,
    상기 공동편집 영역을 제공하는 단계는,
    상기 계정 정보에 기초하여 공동편집이 가능한 편집 데이터가 연동되어 편집을 실행하고 상기 연동된 편집 데이터에 상기 계정 정보에 존재하는 사용자가 접속됨에 따라 공동편집을 실행하는 단계
    를 포함하는 공동편집 지원 방법.
  12. 컴퓨터로 구현되는 공동편집 지원 서버에 의해 수행되는 공동편집 지원 방법을 실행시키기 위해 컴퓨터 판독 가능한 저장매체에 저장된 컴퓨터 프로그램에 있어서,
    웹 브라우저의 웹 페이지 내에서 제공되는 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 단계; 및
    상기 접근 요청에 따라 상기 편집 영역에 대한 플러그인을 실행하여, 상기 플러그인에 기반한 후킹을 통해 소스 코드 내에서 상기 편집 영역과 연관된 엘리먼트에 해당하는 코드를 숨기고 상기 공동편집을 위한 코드를 삽입함으로써 상기 웹 페이지 내의 상기 편집 영역을 대체하여 공동편집 영역을 제공하는 단계
    를 포함하는 컴퓨터 판독 가능한 컴퓨터 프로그램.
  13. 컴퓨터로 구현되는 공동편집 지원 서버에 있어서,
    웹 브라우저의 웹 페이지 내에서 제공되는 편집 영역(Editing Area)으로부터 공동편집을 위한 접근 요청을 수신하는 수신부; 및
    상기 접근 요청에 따라 상기 편집 영역에 대한 플러그인을 실행하여, 상기 플러그인에 기반한 후킹을 통해 소스 코드 내에서 상기 편집 영역과 연관된 엘리먼트에 해당하는 코드를 숨기고 상기 공동편집을 위한 코드를 삽입함으로써 상기 웹 페이지 내의 상기 편집 영역을 대체하여 공동편집 영역을 제공하는 변환부
    를 포함하는 공동편집 지원 서버.
  14. 제13항에 있어서,
    상기 수신부는,
    상기 편집 영역에 존재하는 편집 데이터를 마크업 언어(Markup Language) 기반의 데이터로 변환하고, 상기 변환된 마크업 언어 기반의 데이터를 저장하는 것을 포함하는
    것을 특징으로 하는 공동편집 지원 서버.
  15. 제13항에 있어서,
    상기 변환부는,
    상기 제공된 공동편집 영역을 이용하여 공동편집이 가능한 공동편집 에디터를 지원하고,
    상기 공동편집 영역을 통한 포스팅의 작성 및 제출 후 상기 포스팅의 URI에 기초하여 상기 공동편집 영역에 대응하는 공동편집 세션이 생성되고,
    상기 URI는 상기 공동편집 세션에 대해 다른 사용자가 접근하기 위한 접근자가 되는
    것을 특징으로 하는 공동편집 지원 서버.
  16. 제15항에 있어서,
    상기 변환부는,
    상기 공동편집 세션에 기반하여 공동편집을 위한 데이터 타입과 사용자의 참여 여부를 추적하는 데이터 타입에 따른 공동편집 서비스를 제공하는
    것을 특징으로 하는 공동편집 지원 서버.
  17. 제16항에 있어서,
    상기 사용자의 참여 여부를 추적하는 데이터 타입에 기초하여 상기 공동편집에 참여한 사용자의 정보가 기입되고, 상기 공동편집에 참여한 사용자가 공동편집을 종료 또는 이탈함에 따라 상기 기입된 사용자의 정보가 삭제되는
    것을 특징으로 하는 공동편집 지원 서버.
  18. 제15항에 있어서,
    상기 변환부는,
    상기 공동편집 영역에서 발생한 공동편집 데이터를 상기 공동편집을 위한 데이터 타입에 기반한 오퍼레이션으로 취합하고, 상기 취합된 오퍼레이션을 교환하여 데이터를 상호 동기화하는
    것을 특징으로 하는 공동편집 지원 서버.
  19. 제15항에 있어서,
    상기 변환부는,
    사용자별로 상기 생성된 공동편집에 대한 기록들을 서버에 누적하여 플러그인 또는 특정 URL을 통하여 히스토리 목록으로 제공하는
    것을 특징으로 하는 공동편집 지원 서버.
  20. 제15항에 있어서,
    상기 변환부는,
    특정 서비스에서 제공하는 계정 정보 또는 미리 정의된 버디 리스트에 기초하여 상기 공동편집에 참여하는 사용자를 식별하는
    것을 특징으로 하는 공동편집 지원 서버.
KR1020190062224A 2019-05-28 2019-05-28 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템 KR102308015B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190062224A KR102308015B1 (ko) 2019-05-28 2019-05-28 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190062224A KR102308015B1 (ko) 2019-05-28 2019-05-28 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20200136561A KR20200136561A (ko) 2020-12-08
KR102308015B1 true KR102308015B1 (ko) 2021-10-01

Family

ID=73779321

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190062224A KR102308015B1 (ko) 2019-05-28 2019-05-28 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR102308015B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101774267B1 (ko) * 2016-06-27 2017-09-04 주식회사 한글과컴퓨터 전자 문서의 공동 편집을 위한 협업 지원 장치 및 그 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262620B (zh) * 2011-08-04 2014-11-26 无锡永中软件有限公司 一种文档协作方法
KR101273208B1 (ko) * 2011-11-01 2013-07-30 주식회사 잉카인터넷 유알엘을 이용한 보안 모듈 실행 제어장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101774267B1 (ko) * 2016-06-27 2017-09-04 주식회사 한글과컴퓨터 전자 문서의 공동 편집을 위한 협업 지원 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR20200136561A (ko) 2020-12-08

Similar Documents

Publication Publication Date Title
US8935334B2 (en) System and method to create a collaborative workflow environment
KR101933558B1 (ko) 동영상 내 하이라이트 댓글을 처리하기 위한 방법 및 시스템
US8464164B2 (en) System and method to create a collaborative web-based multimedia contextual dialogue
US10733388B2 (en) Content participation translation apparatus and method
US9195757B2 (en) Dynamic digital montage
US9026935B1 (en) Application user interface with an interactive overlay
US20080052372A1 (en) Method and system for presenting information with multiple views
US10282752B2 (en) Computerized system and method for displaying a map system user interface and digital content
EP2819035B1 (en) Systems and methods for presentations with live application integration
EP2439692A1 (en) Platform enabling web-based interpersonal communication within shared digital media
JP6617179B2 (ja) コンテンツ内のハイライトコメントを処理するための方法およびシステム
US20100070862A1 (en) In-page embeddable platform for media selection and playlist creation
US11190557B1 (en) Collaborative remote interactive platform
Dambruch et al. Leveraging public participation in urban planning with 3D web technology
US10437914B2 (en) Creating HTML layouts based on client input and processing
US20190205363A1 (en) Method for creating html layouts based on visual input
KR20130126913A (ko) 콘텐츠 및 통합 소프트웨어 애플리케이션을 포함하는 문서들의 생성, 공유 및 수정
CN102306164A (zh) 用于web服务的后期资源本地化绑定
Bosetti et al. An end user development approach for mobile web augmentation
US11349889B1 (en) Collaborative remote interactive platform
Koukopoulos et al. A participatory digital platform for cultural heritage within smart city environments
US20190205370A1 (en) Creating an email or electronic document layout based on visual input
KR102308015B1 (ko) 웹에서 에디팅 영역을 후킹하는 방식으로 공동편집을 지원하는 방법 및 시스템
KR20080087067A (ko) 컨텐츠 편집툴을 이용한 광고용 멀티미디어 컨텐츠제공방법
Zhang et al. Reanimating cultural heritage through service orientation, workflows, social networking and mashups

Legal Events

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