KR102509469B1 - 멘토링 플랫폼 제공 시스템 및 그 방법 - Google Patents
멘토링 플랫폼 제공 시스템 및 그 방법 Download PDFInfo
- Publication number
- KR102509469B1 KR102509469B1 KR1020220166747A KR20220166747A KR102509469B1 KR 102509469 B1 KR102509469 B1 KR 102509469B1 KR 1020220166747 A KR1020220166747 A KR 1020220166747A KR 20220166747 A KR20220166747 A KR 20220166747A KR 102509469 B1 KR102509469 B1 KR 102509469B1
- Authority
- KR
- South Korea
- Prior art keywords
- terminal
- mentor
- information
- user
- mentee
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 50
- 230000005540 biological transmission Effects 0.000 claims description 26
- 230000002996 emotional effect Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 20
- RNFJDJUURJAICM-UHFFFAOYSA-N 2,2,4,4,6,6-hexaphenoxy-1,3,5-triaza-2$l^{5},4$l^{5},6$l^{5}-triphosphacyclohexa-1,3,5-triene Chemical compound N=1P(OC=2C=CC=CC=2)(OC=2C=CC=CC=2)=NP(OC=2C=CC=CC=2)(OC=2C=CC=CC=2)=NP=1(OC=1C=CC=CC=1)OC1=CC=CC=C1 RNFJDJUURJAICM-UHFFFAOYSA-N 0.000 claims description 10
- 230000008451 emotion Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 7
- 239000004744 fabric Substances 0.000 claims description 3
- 239000003063 flame retardant Substances 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 15
- 230000009466 transformation Effects 0.000 description 12
- 239000011230 binding agent Substances 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004880 explosion Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 230000007935 neutral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- NOOLISFMXDJSKH-UTLUCORTSA-N (+)-Neomenthol Chemical compound CC(C)[C@@H]1CC[C@@H](C)C[C@@H]1O NOOLISFMXDJSKH-UTLUCORTSA-N 0.000 description 1
- 241000284156 Clerodendrum quadriloculare Species 0.000 description 1
- 229920000742 Cotton Polymers 0.000 description 1
- NOOLISFMXDJSKH-UHFFFAOYSA-N DL-menthol Natural products CC(C)C1CCC(C)CC1O NOOLISFMXDJSKH-UHFFFAOYSA-N 0.000 description 1
- 241001520299 Phascolarctos cinereus Species 0.000 description 1
- 239000004760 aramid Substances 0.000 description 1
- 229920003235 aromatic polyamide Polymers 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 244000240602 cacao Species 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000010437 gem Substances 0.000 description 1
- 229910001751 gemstone Inorganic materials 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229940041616 menthol Drugs 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 210000002966 serum Anatomy 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
- G06Q50/2053—Education institution selection, admissions, or financial aid
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, planning or task assignment for a person or group
- G06Q10/063112—Skill-based matching of a person or a group to a task
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
- G06Q10/1093—Calendar-based scheduling for persons or groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/14—Payment architectures specially adapted for billing systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0613—Third-party assisted
- G06Q30/0619—Neutral agent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/08—Auctions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- Finance (AREA)
- Entrepreneurship & Innovation (AREA)
- Educational Administration (AREA)
- Development Economics (AREA)
- Educational Technology (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Game Theory and Decision Science (AREA)
- Data Mining & Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 발명은 멘토링 플랫폼 제공 시스템 및 그 방법에 관한 것으로, 멘토가 소지하는 단말기와 멘티가 소지하는 단말기가 접속하는 서버를 포함하여 멘토와 멘티를 온라인 상에서 매칭한 후, 오프라인 상에서 멘토와 멘티 간 멘토링할 수 있도록 일정을 중재하는 것이 가능하며, 특히 멘티는 멘토에게 대학 또는 전공학과에 대한 멘토링을 제공받는 것이 가능한 멘토링 플랫폼 제공 시스템 및 그 방법에 관한 것이다. 본 발명에 따른 멘토링 플랫폼 제공 시스템은, 서버와, 멘토(Mentor)로 활동하는 복수명의 제1 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제1 단말기, 및 상기 멘토로부터 멘토링을 제공받는 멘티(Mentee)로 활동하는 복수명의 제2 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제2 단말기를 포함한다.
Description
본 발명은 멘토링 플랫폼 제공 시스템 및 그 방법에 관한 것으로, 더욱 상세하게는 멘토가 소지하는 단말기와 멘티가 소지하는 단말기가 접속하는 서버를 포함하여 멘토와 멘티를 온라인 상에서 매칭한 후, 오프라인 상에서 멘토와 멘티 간 멘토링할 수 있도록 일정을 중재하는 것이 가능하며, 특히 멘티는 멘토에게 대학 또는 전공학과에 대한 멘토링을 제공받는 것이 가능한 멘토링 플랫폼 제공 시스템 및 그 방법에 관한 것이다.
일반적으로 멘토링(Mentoring)은 경험과 지식이 많은 사람이 스승 역할을 하여 지도와 조언으로 그 대상자의 실력과 잠재력을 향상시키는 것 또는 그러한 체계를 말하는 것으로, 스승 역할을 하는 사람을 '멘토(mentor)', 지도 또는 조언을 받는 사람을 '멘티(mentee)'라고 한다. 멘토와 멘티의 관계는 살아가는 과정에서 자연스럽게 형성되기도 하고, 기업 등의 조직 안에서 인위적으로 활성화되기도 한다. 멘토링 서비스는 멘티가 자신에게 맞고 실질적인 도움을 줄 수 있는 멘토를 쉽게 찾도록 해주고, 멘티 및 멘토 사이의 질문 및 답변의 처리를 관리하여 멘티 및 멘토 사이의 멘토링 활동이 원활하게 이루어지도록 하는 것이다. 다양한 사안에 대하여 경험 및 지식에 기초하여 조언을 제공하는 멘토가 다양한 사회 활동에서 요구된다. 멘토는 주로 특정 분야에서 오랜 경험에 기초하면서 수많은 분야에서 각각 축적된 경험 및 지식을 가진 사람이 될수 있으므로 다양한 분야에 종사하는 전문 지식인이 멘토가 될 수 있다. 사회 활동 과정에서 대부분의 사람은 멘토가 필요한 상황을 만나게 되고, 특히 청소년은 성장 과정에서 진로, 인성의 형성 또는 사회 활동을 위하여 멘토가 많은 도움을 줄 수 있다. 그러므로 멘토와 이와 같은 멘티를 연결시킬 수 있는 적절한 시스템이 만들어질 필요가 있다.
한편, 대학 진학을 준비하는 청소년 또는 성인에게 대학 또는 전공학과에 대한 멘토링을 제공하는 시스템이 필요하다. 대학 진학을 준비하는 청소년 또는 성인들이 진로, 진학, 입시 등 정보를 얻는 가정, 학교, 학원 또는 인터넷 등에는 대학, 전공학과에 대한 전문성이 결여되어 있어, 대학 진학을 준비하는 청소년 또는 성인 등은 오래된 정보, 일방향적 교육 등으로 부족한 배경지식으로 대학에 진학하고 있는 실정이다. 이에 따라 결국 목표한 대학 또는 목표한 전공 학과에 진학하더라도 그 진학에 후회하며 다른 대학 또는 다른 전공 학과를 위한 진학을 다시 준비하게 되는 문제가 있다.
상술한 문제점을 해결하기 위한 본 발명의 목적은 멘토와 멘티를 온라인 상에서 서로 연결하는 것이 가능한 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 대금 보호 시스템을 통해 멘토링 비용을 보호하는 것이 가능한 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 멘토의 등록 시 멘토의 정보를 수신하여 검증된 멘토만을 멘토로 등록하는 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 멘토와 멘티 간 WebRTC 기반 실시간 영상 통화 서비스 제공하는 것이 가능한 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 멘티가 원하는 멘토링 방식과 멘티가 원하는 멘토를 매칭하는 것이 가능한 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 화재 발생시 본 멘토링 플랫폼 제공 시스템의 서버를 보호할 수 있는 방염구조를 갖는 서버 케이스를 제공하는 것이다.
상술한 문제점을 해결하기 위한 본 발명의 또 다른 목적은 클라우드 컴퓨팅을 수행하는 클라우드 서버를 시스템 내 마련하고, 컴퓨팅 유닛 설정 시, 스케줄 이후 컴퓨팅 유닛에 필요한 요소만 조립하고, 스케줄 변경 시 다시 컴파일하거나 불필요한 요소들이 포함되지 않도록 하여, 데이터 처리의 시간 소모와 메모리 사용량을 최소화함으로써 서버의 처리량을 향상시킬 수 있는 서버 및 서버가 포함된 멘토링 플랫폼 제공 시스템을 제공하는 것이다.
상술한 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 멘토링 플랫폼 제공 시스템은, 서버와, 멘토(Mentor)로 활동하는 복수명의 제1 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제1 단말기 및 상기 멘토로부터 멘토링을 제공받는 멘티(Mentee)로 활동하는 복수명의 제2 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제2 단말기를 포함하며, 상기 서버는, 상기 제1 단말기들로부터 각각 상기 제1 사용자의 정보를 수신하며, 상기 제1 사용자 각각을 멘토로 등록하는 멘토등록부, 상기 제2 단말기들로부터 각각 상기 제2 사용자의 정보를 수신하며, 상기 제2 사용자 각각을 멘티로 등록하는 멘티등록부, 상기 제1 사용자의 정보를 기반으로 멘토정보를 생성하고, 상기 제2 사용자의 정보를 기반으로 멘티정보를 생성하며, 생성한 복수개의 멘토정보 중 상기 멘티정보와 매칭되는 멘토정보를 선택하여 선택된 멘토정보를 기반으로 추천멘토정보를 생성하는 매칭부, 상기 제2 단말기로 상기 추천멘토정보를 송신하여 상기 멘티에게 멘토를 추천하는 송신부, 상기 제2 단말기로부터 멘토링 비용을 결제받는 비용결제부, 상기 제1 단말기 및 상기 제2 단말기로 멘토링 일정을 제공하는 일정등록부, 상기 제1 단말기 및 상기 제2 단말기로부터 멘토링이 종료된 정보를 수신하는 일정종료부, 및 상기 일정종료부가 멘토링이 종료된 정보를 수신하면, 상기 멘토링 비용을 상기 제1 단말기로 지급하는 대금지급부를 포함한다.
본 발명인 멘토링 플랫폼 제공 시스템에 따르면, 멘토와 멘티를 온라인 상에서 서로 연결하는 것이 가능한 효과가 있다.
본 발명인 멘토링 플랫폼 제공 시스템에 따르면, 대금 보호 시스템을 통해 멘토링 비용을 보호하는 것이 가능한 효과가 있다.
본 발명인 멘토링 플랫폼 제공 시스템에 따르면, 멘토의 등록 시 멘토의 정보를 수신하여 검증된 멘토만을 멘토로 등록하는 것이 가능한 효과가 있다.
본 발명인 멘토링 플랫폼 제공 시스템에 따르면, 멘토와 멘티 간 WebRTC 기반 실시간 영상 통화 서비스 제공하는 것이 가능한 효과가 있다.
본 발명인 멘토링 플랫폼 제공 시스템에 따르면, 멘티가 원하는 멘토링 방식과 멘티가 원하는 멘토를 매칭하는 것이 가능한 효과가 있다.
본 발명은 화재 발생시 본 멘토링 플랫폼 제공 시스템의 서버를 보호할 수 있는 방염구조를 갖는 서버 케이스를 제공할 수 있다.
본 발명은 클라우드 컴퓨팅을 수행하는 클라우드 서버를 시스템 내 마련하고, 컴퓨팅 유닛 설정 시, 스케줄 이후 컴퓨팅 유닛에 필요한 요소만 조립하고, 스케줄 변경 시 다시 컴파일하거나 불필요한 요소들이 포함되지 않도록 하여, 데이터 처리의 시간 소모와 메모리 사용량을 최소화함으로써 서버의 처리량을 향상시킬 수 있는 서버 및 서버가 포함된 멘토링 플랫폼 제공 시스템을 제공할 수 있다.
도 1은 본 발명에 따른 멘토링 플랫폼 제공 시스템의 각 구성을 간략히 보여주는 블록도이다.
도 2는 본 발명에 따른 서버의 각 구성을 간략히 보여주는 블록도이다.
도 3은 본 발명에 따른 멘토링 플랫폼 제공 시스템이 SNS 서버를 포함하는 것을 보여주는 블록도이다.
도 4는 본 발명에 따른 영상처리부의 각 구성을 간략히 보여주는 블록도이다.
도 5는 본 발명에 따른 협업편집부의 각 구성을 간략히 보여주는 블록도이다.
도 6은 본 발명에 따른 멘토 플랫폼 제공 방법을 보여주는 흐름도이다.
도 7은 본 발명의 일실시예에 따른 멘토링 플랫폼 제공 시스템의 하드웨어 구성 중 케이스에 설치되는 방염 구조를 도시한 것이다.
도 2는 본 발명에 따른 서버의 각 구성을 간략히 보여주는 블록도이다.
도 3은 본 발명에 따른 멘토링 플랫폼 제공 시스템이 SNS 서버를 포함하는 것을 보여주는 블록도이다.
도 4는 본 발명에 따른 영상처리부의 각 구성을 간략히 보여주는 블록도이다.
도 5는 본 발명에 따른 협업편집부의 각 구성을 간략히 보여주는 블록도이다.
도 6은 본 발명에 따른 멘토 플랫폼 제공 방법을 보여주는 흐름도이다.
도 7은 본 발명의 일실시예에 따른 멘토링 플랫폼 제공 시스템의 하드웨어 구성 중 케이스에 설치되는 방염 구조를 도시한 것이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다.
그리고 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다.
본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 “포함한다” 및/또는 “포함하는” 은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 첨부된 도면을 참조하여 본 발명을 보다 상세하게 설명하고자 한다.
도 1은 본 발명에 따른 멘토링 플랫폼 제공 시스템의 구성을 간략히 보여주는 블록도이다.
본 발명에 따른 멘토링 플랫폼 제공 시스템(1000)은, 도 1을 참조하면, 서버(100)와, 각각 서버(100)와 통신망을 통해 연결되어 서버(100)에 접속하는 것이 가능한 복수개의 제1 단말기(200) 및 복수개의 제2 단말기(300)를 포함한다.
본 발명에 따른 제1 단말기(200)는 멘토(Mentor)로 활동하는 복수명의 제1 사용자가 각각 소지하여 서버(100)에 접속한다. 제1 사용자는 소지한 제1 단말기(200)를 통해 온라인 상에서 서버(100)에 접속하여 멘토로 등록되고, 오프라인 상에서 멘티에게 멘토링을 제공한다. 제1 사용자는, 바람직하게는, 대학 재학생 또는 대학 졸업생일 수 있다.
본 발명에 따른 제2 단말기(300)는 멘토로부터 멘토링을 제공받는 멘티(Mentee)로 활동하는 복수명의 제2 사용자가 각각 소지하며 상기 서버(100)에 접속한다. 제2 사용자는 소지한 제2 단말기(300)를 통해 온라인 상에서 서버(100)에 접속하여 멘티로 등록되고, 오프라인 상에서 멘토에게 멘토링을 제공받는다. 제2 사용자는, 바람직하게는, 대학 진학을 위해 준비 중인 수험생일 수 있다.
도 2는 본 발명에 따른 서버(100)의 구성을 간략히 보여주는 블록도이다.
본 발명에 따른 서버(100)는, 도 2를 참조하면, 멘토등록부(110), 멘티등록부(120), 매칭부(130), 송신부(140), 비용결제부(150), 일정등록부(160), 일정종료부(170) 및 대금지급부(180)를 포함한다.
본 발명에 따른 멘토등록부(110)는, 복수개의 제1 단말기(200)로부터 각각 제1 사용자의 정보를 수신하여, 제1 사용자 각각을 멘토로 등록한다. 이때 멘토등록부(110)가 제1 단말기(200)로부터 수신하는 제1 사용자의 정보는, 상기 제1 사용자의 대학(大學) 재학증명서, 대학 성적증명서 또는 대학 졸업증명서를 포함한다. 또한 제1 사용자의 정보는, 재학 또는 졸업한 대학의 학생증, 신분증을 더 포함한다. 멘토등록부(110)는, 수신한 재학증명서, 성적증명서, 졸업증명서 또는 학생증을 통해 제2 사용자의 재학 중인 대학, 재학 중인 전공, 졸업한 대학 또는 졸업한 전공에 대한 정보를 수집할 수 있다.
대학 진학 이전 문과 또는 이과 등 계열 및 대학에 진학하였던 입학 전형 등에 대한 정보를 더 포함할 수 있다.
또한 제1 사용자의 정보는 제1 사용자의 성향에 대한 정보를 더 포함할 수 있다. 제1 사용자의 성향에 대한 정보는, 복수개의 문항이 포함된 진단문항에 의해 수집될 수 있다. 멘토등록부(110)는 제1 단말기(200)로 제1 사용자의 성향을 파악하기 위한 정형 데이터를 수집하기 위해 진단문항을 송신하고, 제1 단말기(200)는 수신한 진단문항에 대한 응답을 멘토등록부(110)로 송신할 수 있다. 멘토등록부(110)는 그 진단문항에 대한 응답을 기반으로 정형멘토성향프로파일을 생성한다.
본 발명에 따른 멘티등록부(120)는, 복수개의 제2 단말기(300)로부터 각각 제2 사용자의 정보를 수신하여, 제2 사용자 각각을 멘티로 등록한다. 이때, 멘티등록부(120)가 제2 단말기(300)로부터 수신하는 제2 사용자의 정보는, 제2 사용자의 진학 희망 대학 또는 제2 사용자의 진학 희망 전공을 포함한다. 또한 제2 사용자의 정보는, 멘티로 등록될 또는 등록된 제2 사용자가 원하는 멘토링 방식에 대한 정보를 포함한다. 멘토링 방식은, 캠퍼스투어 방식, 동네 카페 만남 방식 및/또는 실시간 영상 통화 서비스인 화상전화 방식을 포함한다.
또한 제2 사용자의 정보는 제2 사용자의 성향에 대한 정보를 더 포함할 수 있다. 제2 사용자의 성향에 대한 정보는, 복수개의 문항이 포함된 진단문항에 의해 수집될 수 있다. 멘티등록부(120)는 제2 단말기(300)로 제2 사용자의 성향을 파악하기 위한 정형 데이터를 수집하기 위해 진단문항을 송신하고, 제2 단말기(300)는 수신한 진단문항에 대한 응답을 멘티등록부(120)로 송신할 수 있다. 멘티등록부(120)는 그 진단문항에 대한 응답을 기반으로 정형멘티성향프로파일을 생성한다.
멘토등록부(110) 및 멘티등록부(120)가 제1 단말기(200) 및 제2 단말기(300)로 송신하는 진단문항은, 공지된 성향테스트 용 진단문항일 수 있으며, 예를 들어, MBTI(Myers-Briggs-Type Indicator), 16 Personalites, TRUITY, IDRlabs, Jung Typologycentral, Sakinorva 등에서 제공하는 진단문항을 포함할 수 있다.
본 발명에 따른 매칭부(130)는, 멘토등록부(110)가 수신한 제1 사용자의 정보 및 멘토등록부(110)가 생성한 정형멘토성향프로파일을 기반으로 멘토정보를 생성한다. 또한 매칭부(130)는, 멘티등록부(120)가 수신한 제2 사용자의 정보 및 멘티등록부(120)가 생성한 정형멘티성향프로파일을 기반으로 멘티정보를 생성한다. 매칭부(130)가 생성한 멘토정보와 멘티정보는 복수개일 수 있다. 즉, 복수명의 멘토에 대한 멘토정보를 생성하고, 복수명에 대한 멘티정보를 생성한다. 매칭부(130)는 복수개의 멘토정보 중에서 어느 멘티정보와 매칭되는 멘토정보를 선택한다. 즉 하나의 멘티정보에 복수개의 멘토정보가 매칭된다. 매칭부(130)는 선택된 복수개의 멘토정보가 포함된 추천멘토정보를 생성한다. 매칭부(130)는 추천멘토정보를 생성할 때 제2 사용자의 정보를 기준으로 복수명의 제1 사용자의 정보를 비교한다. 예를 들어, 매칭부(130)는 제2 사용자의 진학 희망 대학 또는 진학 희망 전공과, 제1 사용자의 재학 중인 대학, 재학 중인 전공, 졸업한 대학 또는 졸업한 전공을 비교하여 추천멘토정보를 생성한다. 즉 추천멘토정보는, 제2 사용자가 진학을 희망하는 대학 또는 전공에 재학중이거나 졸업한 제1 사용자들에 대한 정보를 포함한다. 또한 추천멘토정보를 생성하기 위한 정보로서, 대학 입학 전형과 문이과 등 계열에 대한 정보도 전술한 바와 같이 비교되어 이용될 수 있다. 따라서 추천멘토정보는 제2 사용자의 정보를 기준으로 복수명의 제1 사용자 중 특정 제1 사용자가 선택되어 생성됨에 따라 추천멘토정보에 포함된 멘토들은 멘티가 닮고 싶은 멘토일 수 있다. 이는 후술하게 될 SNS 서버(400)에서 수집된 비정형 데이터를 기초로 생성되는 추천멘토정보의 멘티와 닮은 멘토에 대한 것과 대비된다.
도 3은 본 발명에 따른 멘토링 플랫폼 제공 시스템이 SNS 서버(400)를 포함하는 것을 보여주는 블록도이다.
한편, 본 발명에 따른 멘토링 플랫폼 제공 시스템(1000)은, 도 3을 참조하면, 공지된 SNS(Social Network Service) 서버(100)를 더 포함한다. 공지된 SNS 서버(400)는 페이스북, 트위터, 네이버 블로그 등을 포함한다.
멘토등록부(110)는, 제1 단말기(200)로부터 제1 사용자의 SNS 계정 정보를 수신하고, 수신한 계정을 기반으로 SNS 서버(400)에서 멘토의 비정형 데이터를 수집하며, 멘티등록부(120)는, 제2 단말기(300)로부터 제2 사용자의 SNS 계정 정보를 수신하고, 수신한 계정을 기반으로 SNS 서버(400)에서 상기 멘티의 비정형 데이터를 수집한다.
매칭부(130)는, 멘토의 비정형 데이터를 기반으로 비정형멘토성향프로파일을 생성하고, 멘티의 비정형 데이터를 기반으로 비정형멘티성향프로파일을 생성한다.
매칭부(130)는 생성한 비정형멘토성향프로파일 및 비정형멘티성향프로파일을 비교하여 서로 유사한 성향을 가진 멘토와 멘티에 대한 정보가 포함된 비정형추천멘토정보를 생성한다. 이에 따라 정형 데이터를 기초로 생성된 추천멘토정보와 비교할 때, 비정형 데이터를 기초로 생성된 비정형추천멘토정보는 멘티에게 멘티와 유사한 성향의 멘토를 추천하는 것이 가능하다.
멘토등록부(110) 및 멘티등록부(120)는, 멘토와 멘티의 성향을 파악하여 멘토성향프로파일 및 멘티성향프로파일을 생성할 때, 그 기초가 되는 정보를 수집하기 위해 전술한 진단문항에 의한 정형 데이터뿐만 아니라, 공지된 SNS 서버(400)에 기록된 멘토와 멘티의 계정에서 비정형 데이터를 수집할 수 있다. 즉, 비정형 데이터는 공지의 SNS 서버(400)에서 수집될 수 있다. 진단문항에 의한 답변, 즉 정형 데이터는 사용자(제1 사용자 및 제2 사용자, 이하 같다)에게 특정 문항에 대한 답변을 하도록 강요 또는 유도된 것으로, 정확한 또는 진실된 답변이 수신된 것으로 기대하기 어려울 수 있다. 반면에 사용자가 특정 문항에 대한 답변이 강요 또는 유도되지 않는 상태에서 작성한 글에는 더 정확한 또는 진실된 정보가 담겨있을 수 있다. 즉, 트위터, 블로그, 커뮤니티, 인스타그램 등과 같은 SNS(Social Network Service) 서버(100)로부터 수집된 비정형 데이터는 소비자 스스로 입력한 것이어서 ‘디지털 자백약(truth serum)’이라 불릴 정도로 소비자의 솔직한 감성이 반영되어 있다는 특성을 갖는다. 멘토등록부(110) 및 멘티등록부(120)가 수집하는 비정형 데이터는 전술한 진단문항의 답변에 의해 수집한 정형 데이터와 함께 성향프로파일을 생성하는 기초가 될 수 있다.
멘토등록부(110) 및 멘티등록부(120)가 비정형 데이터에 의해 생성하는 성향프로파일은 독립적으로 각각 비교되어 비정형추천멘토정보를 생성하는 정보의 기초가 될 수도 있고, 또는 진단문항에 의해 수집된 정형 데이터에 기반하여 생성된 추천멘토정보를 변경할 때 이용될 수도 있다. 즉, 멘토와 멘티의 성향이 서로 유사한 경우 서로 매칭할 수 있도록 한다.
멘토등록부(110) 및 멘티등록부(120)는, 제1 단말기(200) 및 제2 단말기(300)로부터 사용자의 SNS(Social Network Service) 계정 정보를 수신한다. 멘토등록부(110) 및 멘티등록부(120)는 수신한 계정을 기반으로 카카오스토리, 페이스북(facebook), 트위터(twitter) 등 공지의 SNS 서버(400)에서 사용자의 비정형 데이터를 수집한다. 멘토등록부(110) 및 멘티등록부(120)는, 수집한 비정형 데이터를 기반으로 사용자의 성향프로파일을 생성한다. 멘토등록부(110) 및 멘티등록부(120)가 수신하는 계정 정보는, SNS 주소, 팔로어 수, 접속 지역 및 SNS 개설일을 포함한다.
멘토등록부(110) 및 멘티등록부(120)는 SNS 서버(400)에서 사용자 계정에 속한 피드 데이터를 모두 수집한 후, 감성 상태 단어를 추출할 수 있다.
멘토등록부(110) 및 멘티등록부(120)는, 계정 정보에 따라 가중치를 주어 성향프로파일(비정형멘토성향프로파일 및 비정형멘티성향프로파일, 이하 같다)을 생성할 수 있다. 예를 들어, 멘토등록부(110) 및 멘티등록부(120)는, 수신한 계정의 SNS 개설일이 최근(예를 들어, 현재부터 1개월 이하)인 경우 해당 SNS 계정에서 수집한 비정형 데이터에 의한 값을 최소화하고, SNS 개설일이 오래된 과거(예를 들어, 현재부터 1개월 초과)인 경우 수집한 비정형 데이터에 의한 값에 충분한 가중치를 주어 생성된 성향프로파일을 변경할 수 있다. 즉, 진단문항에 의한 정형 데이터에 기반하여 생성된 성향프로파일이 SNS 계정 정보에 의한 비정형 데이터에 따라 변경될 때, SNS 계정 정보에 의해 변경되는 성향프로파일 값에 변화를 줄 수 있다.
전술한 바와 같이, 멘토등록부(110) 및 멘티등록부(120)는 SNS 서버(400)에서 사용자의 비정형 데이터를 수집하고, 멘토등록부(110) 및 멘티등록부(120)는 수집한 비정형 데이터를 기반으로 사용자의 성향프로파일을 생성 또는 변경한다. 멘토등록부(110) 및 멘티등록부(120)가 성향프로파일을 생성 또는 변경할 때 사용되는 비정형 데이터는 사용자의 감정 상태를 나타내는 단어를 포함할 수 있다. 멘토등록부(110) 및 멘티등록부(120)는 사용자의 감정분석을 통해 성향프로파일을 생성 또는 변경한다. 멘토등록부(110) 및 멘티등록부(120)가 사용자의 SNS 상 감정 상태를 분석함에 따라 서로 유사한 성향을 가진 사용자들을 서로 매칭해줄 수 있다.
빅데이터는 일반적으로 양적으로 방대한 데이터를 의미하며, 설문조사 등을 통해 연구자의 계획에 의해 만들어진 데이터(made data)와는 달리 연구자의 개입 없이 자연스럽게 발견된 데이터(found data)로, 데이터의 형태도 텍스트, 이미지, 위치정보 등 다양한 특성을 갖는다(Connelly, Playford, Gayle & Dibben, 2016). 그리고 빅데이터 중 트위터, 블로그, 커뮤니티, 인스타그램, 뉴스와 같은 소셜 네트워크 (social network)를 통해 수집된 데이터를 SNS(Social Network Service) 빅데이터 혹은 소셜(social) 빅데이터라 칭하며 텍스트 형태를 갖는다. 특히 소셜 네트워크 중 뉴스를 제외한 트위터, 블로그 등으로부터 수집된 SNS 빅데이터는 소셜 네트워크 이용자가 스스로 입력한 것이기 때문에 이용자의 솔직한 감성 즉, 이용자의 심리적 특성이 반영된 자료를 얻을 수 있다는 장점이 있다
빅데이터의 감성분석(sentiment analysis)은 오피니언 마이닝(opinion mining)이라고도 불리며, 텍스트에 나타난 사람들의 주관적인 감정이나 생각을 분석하는 자연어 처리기술이다. 감성분석은 크게 3단계를 거치며, 첫 단계는 데이터 수집(data crawling) 단계로 각종 블로그, 게시판, 제품평가란 등 공개적인 데이터 소스 뿐만 아니라 트위터, 페이스북과 같은 개인적인 소셜 네트워크 사이트에서도 데이터 끌어올 수 있다. 그 다음은 주관성 탐지(subjectivity detection) 단계를 거치게 되며, 이는 수집한 데이터(텍스트) 중 개인정보를 걸러내고 감성분석에 사용될 텍스트 요소만 추출하는 작업과정을 의미한다. 그리고 마지막으로 극성탐지 단계를 거치게 되는데, 이는 추출된 텍스트 요소가 긍정, 부정, 혹은 중립인지를 판단하는 작업이 이루어지는 것을 의미하며, 미리 만들어 놓은 사전(dictionary)에 기초하여 감성분류가 이루어진다.
한국어 텍스트 분석은 어렵고 복잡하여 높은 전문성이 필요한 것으로 알려져 있으나, 현재는 기성 프로그램을 통하여 비전문인도 비교적 쉽게 분석을 할 수 있다. 현재 시중에 나와 있는 프로그램은 다음 소프트(Daum soft)에서 개발한 썸트렌드 비즈(Sometrend Biz)를 비롯하여 KoALA, R 등이 있다.
SNS 빅데이터의 감성분석에 기초한 선행연구는 매우 다양한 분야에서 나타나고 있으며, 크게 2가지 방법으로 감성분석 결과를 활용할 수 있다. 그 2가지 방법은 각각 감성어가 갖고 있는 의미자체에 기초한 방법과 감성유형(긍정, 부정 등)별 감성어 빈도(수)에 기초한 방법을 포함한다. 특히 감성유형별 감성어 빈도는 전체 감성어 빈도 중 긍정, 부정 감성어 빈도의 비율을 각각 산출하여 활용한다.
멘토등록부(110) 및 멘티등록부(120)는, 현재 또는 과거 사용자의 계정에서 SNS 피드 정보를 수집한다. 멘토등록부(110) 및 멘티등록부(120)는 사용자의 피드에서 대학, 진학, 전공, 학과, 과목, 수험, 입학 전형 등 대학 진학과 유사한 단어들이 포함된 경우, 동일한 피드에 포함된 감성어를 추출한다. 한편, 멘토등록부(110) 및 멘티등록부(120)는 현재 사용자가 초, 중, 고등학교 학생 또는 그에 준하는 학습(수능, 자격증, 대학원 진학 등을 위한 학습을 포함한다)을 하는 성인인 경우, 그 피드에 ‘학교’, ‘학원’ 이라는 단어가 포함된 경우에만 그 피드에서 감성어를 추출하도록 할 수 있다. 이는 초, 중, 고등학교 학생 또는 그에 준하는 학습을 하는 성인인 경우에 추출한 감성어와 대학 진학 간의 매칭 정확도를 높이기 위한 것이다.
멘토등록부(110) 및 멘티등록부(120)는 추출한 감성어를 감성어 수(빈도), 감성 유형별(긍정, 부정, 중립, 기타) 감성어 수 또는 감성 유형별 감성어 비율을 분석할 수 있다. 특히 긍정, 부정 감성어들 중 동일한 단어별로 빈도수가 높은 감성어와 감성어 수를 분석할 수 있다. 다만, ‘즐겁다’, ‘즐거운’과 같이 동일한 의미이지만 어미가 달라 서로 다른 단어로 인식되는 경우, 이들을 동일한 감성어로 다시 정리하여 분석할 수 있다.
이때의 감성어는, 긍정 감성어의 ‘체계적’ 외, 좋은, 도움, 가능한, 효율적, 열정, 성공하다, 우수한, 쉬운 을 포함할 수 있고, 부정 감성어의 ‘어렵다’ 외, 부족한, 고민, 힘들다, 걱정, 고민, 걱정, 지루하다, 한계있다, 아쉽다 등을 포함할 수 있다. 다만, 이에 한정되는 것은 아니고, 감정을 표현하는 단어도 포함할 수 있다.
멘토등록부(110) 및 멘티등록부(120)는 긍정 감성어에는 + 점수를, 부정 감성어에는 - 점수를 주어 연산할 수 있다. 또한 멘토등록부(110) 및 멘티등록부(120)는 추출된 감성어에 따라 가중치를 적용하여 각각 연산하여 성향프로파일을 생성 또는 변경할 수 있다.
본 발명에 따른 멘토링 플랫폼 제공 시스템(1000)은, 스마트 워치 등을 포함하는 웨어러블 장치(미도시)를 더 포함할 수 있다. 웨어러블 장치는 추천멘토정보를 수신하였을 때 제2 사용자의 감정상태를 수집한다. 이때의 감정상태는 긍정 또는 부정의 감정상태를 포함한다. 공지된 웨어러블 장치는 착용자의 감정상태 및 스트레스 등의 데이터를 수집할 수 있다.
멘토등록부(110) 및 멘티등록부(120)는 웨어러블 장치와 연결되고, 웨어러블 장치로부터 감정상태 정보를 수신한다. 멘토등록부(110) 및 멘티등록부(120)는 제2 사용자가 제2 단말기(300)를 통해 추천멘토정보를 수신하였을 대 제2 사용자의 감정상태를 파악할 수 있다. 이때의 감정상태가 전술한 바와 같은 긍정 감정상태 또는 부정 감정상태인 여부를 파악하여 멘토의 추천을 위한 성향프로파일을 생성 또는 변경할 수 있다.
본 발명에 따른 송신부(140)는, 매칭부(130)가 생성한 추천멘토정보를 제2 사용자에게 전달하기 위해 제2 단말기(300)로 송신하여 멘티에게 복수명의 멘토를 추천할 수 있다. 송신부(140)는 복수명의 멘토정보가 포함된 리스트를 생성하여 추천멘토정보를 제2 단말기(300)로 송신할 수 있다. 복수개의 추천멘토정보가 포함된 리스트를 수신한 제2 사용자는 복수명의 멘토 중에서 특정 멘토를 선택하고, 그 선택한 정보를 송신부(140)로 송신할 수 있다.
본 발명에 따른 비용결제부(150)는, 제2 사용자가 복수명의 멘토 중에서 특정 멘토를 선택한 후, 제2 단말기(300)로부터 멘토링 비용을 결제받는다. 멘토링 비용은 멘티가 원하는 시간과 원하는 멘토링 방식에 따라 그 비용이 달라질 수 있다.
본 발명에 따른 일정등록부(160)는, 비용결제부(150)가 제2 단말기(300)로부터 멘토링 비용을 결제받은 후, 제1 단말기(200) 및 제2 단말기(300)로 멘토링 일정을 제공한다. 제1 단말기(200)와 제2 단말기(300)에 따른 일정이 합치가 된 경우 일정등록부(160)는 멘토링 일정을 확정한다.
본 발명에 따른 일정종료부(170)는, 멘토링 이후, 제1 단말기(200) 및 제2 단말기(300)로부터 멘토링이 종료된 정보를 수신할 수 있다.
본 발명에 따른 대금지급부(180)는, 일정종료부(170)가 멘토링이 종료된 정보를 수신한 경우, 제2 단말기(300)로부터 결제받은 멘토링 비용을 제1 단말기(200)로 지급한다. 이에 따라 멘톨이 시작 전, 멘티가 멘토에게 바로 결제하는 것이 아닌, 대금 보호 시스템을 통해 멘토링 비용을 보호할 수 있다.
본 발명에 따른 멘토링 방식은, 전술한 바와 같이, 캠퍼스 투어 및 동네 카페 등에서 대면하는 오프라인 상 멘토링과, 화상전화를 통한 온라인 상 멘토링이 가능하다.
격지자 간에 생생한 대화 및 정보교환을 가능하게 하는 기술로서 다양한 쌍방향 통신기술이 개발되어 왔으며, 등록특허 10-1493835호에서는 웹 서버(100)를 기반으로 전자 장치의 교육 컨텐츠 저작 및 장치 제어를 제공하는 교육 장치, 교육 시스템 및 교육 방법을 개시하고 있으나, 교환의 대상이 되는 정보의 형태 및 방법이 HTML문서에 한정되어 있어서 변화된 기술상을 반영하지 못하는 한계가 있으며, 다양한 방화벽의 존재 및 복잡해진 인터넷 환경에서 원활한 정보 교환이 가능하기 위해서는 이에 상응하는 기술이 요청되고 있다.
본 발명에 따른 서버(100)는 제1 단말기(200) 및 제2 단말기(300) 간 WebRTC 기반 실시간 영상 통화 서비스 제공하는 영상서비스부(190)를 더 포함한다.
본 발명에 따른 영상서비스부(190)는, 멘토와 멘티 간 원활한 멘토링 서비스를 위한 WebRTC 기반의 실시간 영상 및 채팅을 제공한다.
도 4는 본 발명에 따른 영상처리부의 각 구성을 간략히 보여주는 블록도이다.
본 발명에 따른 영상서비스부(190)는, 도 4를 참조하면, 제2 단말기(300)의 화면을 구성하는 서비스서버(1901), 제2 단말기(300)가 방화벽 네트워크 상에서도 송수신이 가능하도록 하는 턴/스턴서버(1902), 제1 단말기(200)의 화면을 구성하는 오엔엠서버(1903), 오엔엠서버(1903)과 연동하는 데이터베이스서버(1904), 서비스서버(1901) 및 데이터베이스서버(1904)와 연동하는 코어서버(1905), 코어서버(1905)와 연동하며 제1 단말기(200) 및 제2 단말기(300)를 포함하는 외부의 IOS 및 안드로이드 장치와 연동하기 위한 푸쉬서버(1906) 및 코어서버(1905)와 연동하며 외부의 네트워크와 연동하기 위한 로긴에스에스오게이트웨이(1907)을 포함한다.
제1 단말기(200) 및 제2 단말기(300)는 유무선통신이 가능한 스마트 기기로서 예를 들면, 컴퓨터, 스마트폰, 태블릿 PC 등이 해당되나 이에 국한되는 것은 아니다. 제1 단말기(200)는 제2 단말기(300)와 피어커넥션(peer connection)하므로, 제2 단말기(300)와 제1 단말기(200)는 1:1 또는 N:1로 음성통화, 영상통화, 파일전송, 채팅이 가능하다. 또한, 플러그인의 도움 없이 통신할 수 있는 API를 이용하므로, 웹브라우저간에 상술한 다양한 정보형태가 송수신 가능하도록 편리성이 강화되어 있다.
서비스서버(1901)는, 제2 단말기(300)의 화면을 구성하는 것으로서, 바람직하게는 WebRTC, HTML5, javascript, jQuery의 기술로 구현한다.
턴/스턴서버(1902)는, 제2 단말기(300)가 방화벽 네트워크 상에서도 정보 등이 중단되지 않고 송수신이 원할하게 가능하도록 하기 위한 것으로서, 발신자와 수신자에 대한 호처리(call processing) 이후 실질적인 영상통화데이터의 전송방식은 서버(100)를 거치는 방식과 서버(100)를 거치지 않고 발신자와 수신자간에 직접 전송하도록하는 2가지 방식을 이용하도록 한다. 즉, stun서버(100)통한 공인 IP를 획득한 이후에 P2P로 미디어를 연결하여 영상이나 음성을 송수신하고, 공인 IP를 획득하지 못할 경우 turn서버(100)를 통하여 영상이나 음성 데이터를 릴레이하여 송수신하도록 한다.
오엔엠서버(1903)는, 제1 단말기(200)의 화면을 구성하는 것으로서, 관리자모드, 모니터링, 통계치 등을 저장한다.
데이터베이스서버(1904)는, 오엔엠서버(1903)과 연동하는 것으로서, 친구정보, 친구등록, 주소록, 친구그룹관리, 친구 관계관리 등의 정보와 메세지정보, 히스토리정보 등을 저장한다.
코어서버(1905)는, 서비스서버(1901) 및 데이터베이스서버(1904)와 연동하여 커뮤니케이션 서버(100)로 기능하는데, 1:1 또는 1:N 세션정보를 공유하고 그 정보를 이용하여 영상통화 및 음성통화를 구현한다.
푸쉬서버(1906)는, 코어서버(1905)와 연동하며 외부의 IOS 및 안드로이드 장치와 연동하기 위하여 프로토콜을 변환한다,
로긴에스에스오게이트웨이(1907)는, 코어서버(1905)와 연동하며 외부의 네트워크와 연동하기 위한 것으로서, 외부의 네트워크는 카카오톡, 페이스북, 트위터와 같은 SNS, 소셜네트워크를 포함하나 이에 한정하는 것은 아니다.
본 발명에 따른 영상서비스부(190)가, 제1 단말기(200) 및 제2 단말기(300) 간 WebRTC 기반 실시간 채팅 서비스 제공하는 방법은 크게 4 단계로 분별된다. 제1 단계는 제1 단말기(200)에서 환경을 구성하여 방을 생성한 후에 제2 단말기(300)에게 요청하게 되며, 제2 단계는 제2 단말기(300)가 제1 단말기(200)의 요청을 받아 방으로 접속하게 되며, 제3 단계는 제2 단말기(300)가 방으로 접속할 경우 제1 단말기(200) 및 제2 단말기(300)의 브라우저 간에 데이터 전달을 위한 피어커넥션이 시작되어 영상이 공유되며, 이 경우 피어커넥션과 무관하게 채팅도 가능하다. 제4 단계는 서비스 종료 시 음성대화에 대하여 녹화파일이 생성되어 데이터베이스서버(1904)로 자동업로드되며, 상기 환경에 대한 정보들도 데이터베이스서버(1904)로 저장된다.
본 발명에 의하면 플러그인의 도움없이도 웹브라우저간에 이용이 가능하므로 편리성이 강화되어 있으며, 방화벽이 설정된 환경에서도 막힘없이 데이터의 송수신이 가능하여 업무진행에 차질이 없도록하며, 음성, 영상, 파일 뿐만 아니라 위치정보, 발언권선택 등의 다양한 정보를 P2P 형태로 전송가능하여 신속한 처리가 가능할 뿐만 아니라 외부의 SNS등과도 연동이 가능하도록 함으로써 다종다양한 이용이 가능하여 최적의 영상서비스를 제공할 수 있다.
도 5는 본 발명에 따른 협업편집부(191)의 각 구성을 간략히 보여주는 블록도이다.
본 발명에 따른 협업편집부(191)는 제1 단말기(200) 및 제2 단말기(300)간 문서의 동시 편집을 지원한다. 본 발명의 일실시예에 따른 문서의 동시 편집을 지원하는 협업편집부(191)는, 도 5를 참조하면, 편집명령수신부(1911) 및 편집명령처리부(1912)를 포함하고, 편집명령처리부(1912)는 편집명령저장부(19121), 편집명령추출부(19122) 및 편집명령전송부(19123)을 포함한다.
편집명령수신부(1911)는 문서에 대한 협업 세션에 참가한 복수개의 제1 단말기(200) 및 제2 단말기(300)에 의해 상기 문서에 대한 편집과 연관된 편집 명령들이 동시에 인가되면, 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각으로부터 상기 문서에 대해서 동시에 인가된 각 편집 명령들을(상기 각 편집 명령들에는 상기 각 편집 명령들의 상기 문서 상에서의 적용 위치와 연관된 좌표 값이 정의되어 있음)수신한다.
편집명령처리부(1912)는 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각으로부터 수신된 상기 각 편집 명령들을 그 수신 순서에 따라 하나씩 복수개의 제1 단말기(200) 및 제2 단말기(300)에 순차적으로 전송하되, 복수개의 제1 단말기(200) 및 제2 단말기(300)에 전송될 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 수신된 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환(Operational Transformation)을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송한다.
이때, 본 발명의 일실시예에 따르면, 편집명령처리부(1912)는 편집명령저장부(19121), 편집명령추출부(19122) 및 편집명령전송부(19123)를 포함할 수 있다.
편집명령저장부(19121)는 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각으로부터 수신된 상기 각 편집 명령들을 그 수신 순서에 기초하여 버퍼의 큐(Queue)에 저장한다.
편집명령추출부(19122)는 상기 버퍼의 큐에 상기 각 편집 명령들이 모두 저장되면, 상기 버퍼의 큐로부터 상기 각 편집 명령들을 상기 버퍼의 큐에서의 저장 순서에 따라 하나씩 추출한다.
편집명령전송부(19123)는 상기 버퍼의 큐에서 상기 각 편집 명령들이 하나씩 추출될 때마다, 상기 하나씩 추출된 상기 각 편집 명령들을 복수개의 제1 단말기(200) 및 제2 단말기(300)에 전송하되, 복수개의 제1 단말기(200) 및 제2 단말기(300)에 전송될 상기 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 상기 버퍼의 큐에 저장된 상기 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 복수개의 제1 단말기(200) 및 제2 단말기(300)에 전송한다.
본 발명의 일실시예에 따르면, 복수개의 제1 단말기(200) 및 제2 단말기(300)는 복수개의 제1 단말기(200) 및 제2 단말기(300) 내에 각각 상기 문서를 저장하고 있고, 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 각 편집 명령들이 순차적으로 하나씩 수신되면, 상기 수신된 각 편집 명령들 내에 정의되어 있는 상기 문서 상에서의 적용 위치와 연관된 좌표 값을 기초로 상기 수신된 각 편집 명령들에 따른 편집 사항을 복수개의 제1 단말기(200) 및 제2 단말기(300) 내에서 각각 저장하고 있는 상기 문서 상에 적용할 수 있다.
이때, 본 발명의 일실시예에 따르면, 복수개의 제1 단말기(200) 및 제2 단말기(300)는 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각에 저장되어 있는 상기 문서에 대해서 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각의 소지자(즉, 학습자 및 교습자)에 의해 상기 각 편집 명령들이 동시에 인가되면, 복수개의 제1 단말기(200) 및 제2 단말기(300)마다 상기 소지자에 의해 인가된 각각의 편집 명령에 따른 편집 사항을 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각에 저장되어 있는 상기 문서 상에 자체적으로 적용한 후 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각에서 상기 소지자에 의해 인가된 각각의 편집 명령을 문서의 동시 편집을 지원하는 협업편집부(191)로 전송할 수 있다.
이때, 본 발명의 일실시예에 따르면, 복수개의 제1 단말기(200) 및 제2 단말기(300)는 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 각 편집 명령들이 순차적으로 하나씩 수신되면, 상기 수신된 각 편집 명령들 중 복수개의 제1 단말기(200) 및 제2 단말기(300) 각각에 저장되어 있는 상기 문서 상에 이미 자체적으로 적용되어 있는 편집 명령과 동일한 편집 명령이 존재하는지 여부를 판단하고, 상기 동일한 편집 명령이 존재하는 것으로 판단되면, 상기 수신된 각 편집 명령들에서 상기 동일한 편집 명령을 제외한 후 상기 수신된 각 편집 명령들 내에 정의되어 있는 상기 문서 상에서의 적용 위치와 연관된 좌표 값을 기초로 상기 수신된 각 편집 명령들에 따른 편집 사항을 복수개의 제1 단말기(200) 및 제2 단말기(300) 내에 각각 저장되어 있는 상기 문서 상에 적용할 수 있다.
이하에서는 본 발명에 따른 문서의 동시 편집을 지원하는 협업편집부(191)의 동작에 대해 예를 들어 상세히 설명하기로 한다.
먼저, 설명의 편의를 위해 제1 단말기(200)의 소지자는 제1 사용자(멘토)라 하고, 제2 단말기(300)의 소지자는 복수명으로 제2-1 사용자(멘티) 및 제2-2 사용자(멘티)라 한다. 제2-1 사용자는 제2-1 단말기(300)를 소지하고, 제2-2 사용자는 제2-2 단말기(300)를 소지한다.
협업편집부(191)는, 단일의 멘토가 복수의 멘티를 함께 문서의 동시 편집을 통해 멘토링하는 것이 가능하다.
제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)는 문서의 동시 편집을 지원하는 협업편집부(191)에 접속하여 문서에 대한 동시 편집을 수행하는 상황으로 가정한다. 또한, 각 제1 단말기(200) 및 제2 단말기(300)가 각 제1 단말기(200) 및 제2 단말기(300)에 탑재되어 있는 브라우저를 통해서 웹을 기반으로 문서에 대한 동시 편집을 수행하는 환경을 가정하기로 한다.
우선, 문서의 동시 편집을 지원하는 협업편집부(191)는 제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)로부터 소정의 문서 스토리지에 저장되어 있는 협업 대상이 되는 원본 문서의 편집을 위한 액세스 요청이 수신되면, 상기 원본 문서를 마크업 언어(Markup Language) 기반 문서로 변환하여 상기 마크업 언어 기반 문서를 제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)로 전송할 수 있다. 본 실시예에서 상기 원본 문서에는 "1234"라고 하는 텍스트가 삽입되어 있는 것으로 가정한다.
그리고, 마크업 언어 기반 문서란 HTML(Hypertext Markup Language)이나 XML(eXtensible Markup Language)과 같은 클라이언트 단말에 설치되어 있는 브라우저를 통해서 열람이 가능한 마크업 언어로 구성된 문서를 의미한다.
예컨대, 소정의 문서 스토리지에 "hwp"나 "docx" 등의 확장자를 갖는 원본 문서가 저장되어 있는 상태에서 제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)로부터 상기 원본 문서에 대한 액세스 요청이 수신되면, 문서의 동시 편집을 지원하는 협업편집부(191)는 상기 문서 스토리지로부터 상기 원본 문서를 추출하여 상기 원본 문서를 HTML 등과 같은 마크업 언어 기반 문서로 변환한 후 상기 변환된 마크업 언어 기반 문서를 제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)로 전송할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 원본 문서가 저장되어 있는 상기 문서 스토리지는 문서의 동시 편집을 지원하는 협업편집부(191) 내부에 탑재되어 있을 수도 있고, 문서의 동시 편집을 지원하는 협업편집부(191)와 별도로 분리된 스탠드 어론(stand alone) 기반의 장치로 구성될 수도 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 마크업 언어 기반 문서가 수신되면, 제2-1 사용자의 제2-1 단말기(300)에 탑재되어 있는 브라우저 1을 통해 상기 마크업 언어 기반 문서를 표시할 수 있다.
이와 유사하게, 제2-2 사용자의 제2-2 단말기(300)는 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 마크업 언어 기반 문서가 수신되면, 제2-2 사용자의 제2-2 단말기(300)에 탑재되어 있는 브라우저 2를 통해 상기 마크업 언어 기반 문서를 표시할 수 있다.
그리고, 제1 사용자의 제1 단말기(200)는 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 마크업 언어 기반 문서가 수신되면, 제1 사용자의 제1 단말기(200)에 탑재되어 있는 브라우저 3을 통해 상기 마크업 언어 기반 문서를 표시할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)에서 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 "1234"의 가장 좌측 지점에 "a"라는 텍스트가 삽입되도록 하는 편집 명령 1이 입력되고, 동시에 제2-2 사용자의 제2-2 단말기(300)에서 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 "1234"의 가장 좌측 지점에 "b"라는 텍스트가 삽입되도록 하는 편집 명령 2가 입력되었으며, 제1 사용자의 제1 단말기(200)에서 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 "1234"의 가장 좌측 지점에 "c"라는 텍스트가 삽입되도록 하는 편집 명령 3이 입력된 경우, 제2-1 사용자의 제2-1 단말기(300)는 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 상기 편집 명령 1에 따른 편집 사항을 적용함으로써, "1234"의 가장 좌측 지점에 "a"라는 텍스트를 삽입한 후 상기 편집 명령 1을 문서의 동시 편집을 지원하는 협업편집부(191)로 전송할 수 있고, 제2-2 사용자의 제2-2 단말기(300)는 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 상기 편집 명령 2에 따른 편집 사항을 적용함으로써, "1234"의 가장 좌측 지점에 "b"라는 텍스트를 삽입한 후 상기 편집 명령 2를 문서의 동시 편집을 지원하는 협업편집부(191)로 전송할 수 있으며, 제1 사용자의 제1 단말기(200)는 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서에 대해 상기 편집 명령 3에 따른 편집 사항을 적용함으로써, "1234"의 가장 좌측 지점에 "c"라는 텍스트를 삽입한 후 상기 편집 명령 3을 문서의 동시 편집을 지원하는 협업편집부(191)로 전송할 수 있다.
이때, 편집명령수신부(1911)는 제2-1 사용자의 제2-1 단말기(300)와 제2-2 사용자의 제2-2 단말기(300) 및 제1 사용자의 제1 단말기(200)에 의해서 동시에 발생한 상기 편집 명령 1, 2, 3을 각 제1 단말기(200) 및 제2 단말기(300)로부터 수신할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 편집 명령 1, 2, 3에는 각 편집 명령의 상기 마크업 언어 기반 문서 상에서의 적용 위치와 연관된 좌표 값이 정의되어 있을 수 있다.
예컨대, 편집 명령이 상기 마크업 언어 기반 문서 상에서 적용되는 위치에 대한 좌표 값을 [x, y]로 정의하기로 하고, 여기서, x를 텍스트의 시작 지점에 대한 좌표, y를 텍스트의 끝 지점에 대한 좌표라 가정하자.
이때, 상기 마크업 언어 기반 문서에서 텍스트가 위치하는 가장 좌측 지점으로부터 우측 방향으로 좌표가 0에서 시작하여 1씩 증가하는 방식으로 할당되어 있다고 가정하면, 상기 편집 명령 1, 2, 3은 각각 상기 마크업 언어 기반 문서에서 가장 좌측 부분에 "a", "b", "c"를 삽입하도록 하는 편집 명령이므로, 각 편집 명령이 적용되는 상기 마크업 언어 기반 문서에서의 시작 지점과 끝 지점의 좌표는 모두 0이 된다.
이로 인해, 상기 편집 명령 1, 2, 3에는 모두 [0, 0]이라고 하는 좌표 값이 정의되어 있을 수 있다.
이렇게, 편집명령수신부(1911)가 각 제1 단말기(200) 및 제2 단말기(300)로부터 상기 편집 명령 1, 2, 3을 수신하게 되면, 편집명령처리부(1912)에 포함되어 있는 편집명령저장부(19121)는 각 제1 단말기(200) 및 제2 단말기(300)로부터 수신된 상기 편집 명령 1, 2, 3을 그 수신 순서에 기초하여 버퍼의 큐에 순차적으로 저장할 수 있다.
예컨대, 편집 명령 2가 가장 먼저 수신되었고, 그 다음에 편집 명령 1이, 마지막으로 편집 명령 3이 편집명령수신부(1911)에 수신되었다면, 편집명령저장부(19121)는 "b"를 삽입하라는 편집 명령 2를 상기 버퍼의 큐에 가장 먼저 저장할 수 있고, "a"를 삽입하라는 편집 명령 1을 그 다음 순서로 저장할 수 있으며, "c"를 삽입하라는 편집 명령 3을 마지막 순서로 저장할 수 있다.
이렇게, 상기 버퍼의 큐에 상기 편집 명령 1, 2, 3이 모두 저장되면, 편집명령추출부(19122)(1822)는 상기 편집 명령1, 2, 3이 상기 버퍼의 큐에 저장된 순서에 따라, 상기 버퍼의 큐로부터 편집 명령 2, 1, 3을 순차적으로 하나씩 추출할 수 있다.
이때, 편집명령전송부(19123)는 상기 버퍼의 큐로부터 편집 명령 2가 가장 먼저 추출되면, 상기 버퍼의 큐 상에 상기 편집 명령 2보다 먼저 저장된 이전 순번의 편집 명령이 존재하는지 여부를 판단할 수 있다.
상기 편집 명령 2는 상기 버퍼의 큐에 가장 먼저 저장된 편집 명령이므로, 편집명령전송부(19123)는 상기 버퍼의 큐 상에 상기 편집 명령 2보다 먼저 저장된 이전 순번의 편집 명령이 존재하지 않는 것으로 판단할 수 있고, 이 경우, 편집명령전송부(19123)는 상기 편집 명령 2에 대해 운영변환(Operational Transformation)을 수행하지 않고, 상기 편집 명령 2를 그대로 각 제1 단말기(200) 및 제2 단말기(300)에 전송할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 2가 수신되면, "a1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 2와 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-1 사용자의 제2-1 단말기(300)의 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 2와 동일한 편집 명령이 적용되어 있지 않기 때문에 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 2에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 2의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 2에 따른 편집 사항을 적용하여 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "ba1234"로 변경할 수 있다.
즉, 상기 편집 명령 2에 정의되어 있는 좌표 값은 [0, 0]으로 상기 편집 명령 2는 가장 좌측 지점에 "b"를 삽입하도록 하는 편집 명령이므로, 제2-1 사용자의 제2-1 단말기(300)는 상기 브라우저 1을 통해 표시되고 있는 "a1234"에서 가장 좌측 지점에 "b"를 삽입함으로써, 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "ba1234"로 변경할 수 있다.
한편, 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 2가 수신되면, "b1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 2과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-2 사용자의 제2-2 단말기(300)의 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 이미 상기 편집 명령 2와 동일한 편집 명령이 자체적으로 적용되어 있기 때문에 상기 마크업 언어 기반 문서에 대해 상기 수신된 편집 명령 2를 다시 적용할 필요가 없으므로, 제2-2 사용자의 제2-2 단말기(300)는 상기 수신된 편집 명령 2를 폐기함으로써, "b1234"라는 편집 상태를 그대로 유지할 수 있다.
마지막으로, 제1 사용자의 제1 단말기(200)는 상기 편집 명령 2가 수신되면, "c1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 2와 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제1 사용자의 제1 단말기(200)의 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 2와 동일한 편집 명령이 적용되어 있지 않기 때문에 제1 사용자의 제1 단말기(200)는 상기 편집 명령 2에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 2의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 2에 따른 편집 사항을 적용하여 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "bc1234"로 변경할 수 있다.
즉, 상기 편집 명령 2에 정의되어 있는 좌표 값은 [0, 0]으로 상기 편집 명령 2는 가장 좌측 지점에 "b"를 삽입하도록 하는 편집 명령이므로, 제1 사용자의 제1 단말기(200)는 상기 브라우저 3을 통해 표시되고 있는 "c1234"에서 가장 좌측 지점에 "b"를 삽입함으로써, 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "bc1234"로 변경할 수 있다.
이때, 본 발명의 일실시예에 따르면, 각 제1 단말기(200) 및 제2 단말기(300)는 각 제1 단말기(200) 및 제2 단말기(300)에서 소정의 편집 명령이 인가될 때마다 해당 편집 명령에 대응하는 고유 시리얼 번호를 생성할 수 있다.
이를 통해, 각 제1 단말기(200) 및 제2 단말기(300)는 문서의 동시 편집을 지원하는 협업편집부(191)로부터 상기 편집 명령 2가 수신되면, 각 제1 단말기(200) 및 제2 단말기(300)의 브라우저를 통해 표시되고 있는 각각의 마크업 언어 기반 문서 상에 이미 적용되어 있는 편집 명령들에 대한 고유 시리얼 번호와 상기 수신된 편집 명령 2에 대한 고유 시리얼 번호를 서로 비교하여 각각의 마크업 언어 기반의 문서 상에 상기 수신된 편집 명령 2와 동일한 편집 명령이 이미 적용되어 있는 여부를 판단할 수 있다.
상기 편집 명령 2가 상기 버퍼의 큐에서 가장 먼저 추출되어 각 제1 단말기(200) 및 제2 단말기(300)에 전송된 이후 상기 버퍼의 큐에서 상기 편집 명령 1이 두 번째로 추출되면, 편집명령전송부(19123)는 상기 버퍼의 큐 상에 상기 편집 명령 1보다 먼저 저장된 이전 순번의 편집 명령이 존재하는지 여부를 판단할 수 있다.
상기 버퍼의 큐 상에는 상기 편집 명령 1 이전에 상기 편집 명령 2가 먼저 저장되어 있었기 때문에 편집명령전송부(19123)는 상기 버퍼의 큐 상에 상기 편집 명령 1보다 먼저 저장된 이전 순번의 편집 명령이 존재하는 것으로 판단할 수 있고, 이 경우, 편집명령전송부(19123)는 상기 편집 명령 1에 대해, 이전 순번의 편집 명령인 상기 편집 명령 2의 상기 마크업 문서 상에서의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 1이 상기 마크업 언어 기반 문서에 적용될 좌표 값을 변경하는 운영변환을 수행할 수 있다. 관련해서, 상기 편집 명령 2에 정의되어 있는 좌표 값은 [0, 0]이고, 상기 [0069] 편집 명령 1에 정의되어 있는 좌표값도 [0, 0]으로 상기 편집 명령 2와 상기 편집 명령 1이 적용되는 좌표 값은 서로 중복되기 때문에, 편집명령전송부(19123)는 상기 편집 명령 1에 대해 상기 편집 명령 1이 적용되는 좌표 값을 우측 방향으로 한 칸 이동시켜[1, 1]이라는 좌표 값으로 변경할 수 있다.
즉, 상기 마크업 언어 기반 문서 상에서 가장 좌측 지점에 "b"를 삽입하라는 상기 편집 명령 2와 가장 좌측 지점에 "a"를 삽입하라는 상기 편집 명령 1의 적용 지점이 동일하기 때문에 편집명령전송부(19123)는 상기 버퍼의 큐에 뒤늦게 저장된 상기 편집 명령 1에 대해 적용 지점을 가장 좌측 지점에서 한 칸 우측으로 이동한 지점으로 변경하는 운영변환을 수행할 수 있다.
그러고 나서, 편집명령전송부(19123)는 상기 운영변환이 완료된 상기 편집 명령 1을 각 제1 단말기(200) 및 제2 단말기(300)로 전송할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 1이 수신되면, "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 1에 대응하는 고유 시리얼 번호를 확인하여 "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-1 사용자의 제2-1 단말기(300)의 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 이미 상기 편집 명령 1과 동일한 편집 명령이 자체적으로 적용되어 있기 때문에 상기 마크업 언어 기반 문서에 대해 상기 수신된 편집 명령 1을 다시 적용할 필요가 없으므로, 제2-1 사용자의 제2-1 단말기(300)는 상기 수신된 편집 명령 1을 폐기함으로써, "ba1234"라는 편집 상태를 그대로 유지할 수 있다.
한편, 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 1이 수신되면, "b1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 1에 대응하는 고유 시리얼 번호를 확인하여 "b1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-2 사용자의 제2-2 단말기(300)의 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 1과 동일한 편집 명령이 적용되어 있지 않기 때문에 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 1에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 1의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 1에 따른 편집 사항을 적용하여 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "ba1234"로 변경할 수 있다.
즉, 상기 편집 명령 1에 정의되어 있는 좌표 값은 [1, 1]로 상기 편집 명령 1는 두 번째 좌측 지점에 "a"를 삽입하도록 하는 편집 명령이므로, 제2-2 사용자의 제2-2 단말기(300)는 상기 브라우저 2를 통해 표시되고 있는 "b1234"에서 두 번째 좌측 지점에 "a"를 삽입함으로써, 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "ba1234"로 변경할 수 있다.
마지막으로, 제1 사용자의 제1 단말기(200)는 상기 편집 명령 1이 수신되면, "bc1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제1 사용자의 제1 단말기(200)는 상기 편집 명령 1에 대응하는 고유 시리얼 번호를 확인하여 "bc1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 1과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제1 사용자의 제1 단말기(200)의 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 1과 동일한 편집 명령이 적용되어 있지 않기 때문에 제1 사용자의 제1 단말기(200)는 상기 편집 명령 1에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 1의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 1에 따른 편집 사항을 적용하여 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "bac1234"로 변경할 수 있다.
즉, 상기 편집 명령 1에 정의되어 있는 좌표 값은 [1, 1]로 상기 편집 명령 1는 두 번째 좌측 지점에 "a"를 삽입하도록 하는 편집 명령이므로, 제1 사용자의 제1 단말기(200)는 상기 브라우저 3을 통해 표시되고 있는 "bc1234"에서 두 번째 좌측 지점에 "a"를 삽입함으로써, 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "bac1234"로 변경할 수 있다.
상기 편집 명령 1이 상기 버퍼의 큐에서 두 번째로 추출되어 각 제1 단말기(200) 및 제2 단말기(300)에 전송된 이후 상기 버퍼의 큐에서 상기 편집 명령 3이 마지막으로 추출되면, 편집명령전송부(19123)는 상기 버퍼의 큐 상에 상기 편집 명령 3보다 먼저 저장된 이전 순번의 편집 명령이 존재하는지 여부를 판단할 수 있다.
상기 버퍼의 큐 상에는 상기 편집 명령 3 이전에 상기 편집 명령 2와 상기 편집 명령 1이 먼저 저장되어 있었기 때문에 편집명령전송부(19123)는 상기 버퍼의 큐 상에 상기 편집 명령 3보다 먼저 저장된 이전 순번의 편집 명령이 존재하는 것으로 판단할 수 있고, 이 경우, 편집명령전송부(19123)는 상기 편집 명령 3에 대해 이전 순번의 편집 명령인 상기 편집 명령 2와 상기 편집 명령 1의 상기 마크업 문서 상에서의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 3이 상기 마크업 언어 기반 문서에 적용될 좌표 값을 변경하는 운영변환을 수행할 수 있다.
관련해서, 상기 편집 명령 2에 정의되어 있는 좌표 값은 [0, 0]이고, 상기 편집 명령 1에 정의되어 있는 좌표값은 운영변환이 수행됨으로 인해 [1, 1]인 상황에서, 상기 편집 명령 3에 정의되어 있는 좌표 값은 [0, 0]이기 때문에 상기 편집 명령 3에 대해 상기 편집 명령 2와 1에 정의된 좌표 값과 중복되지 않도록 하기 위해서, 편집명령전송부(19123)는 상기 편집 명령 3에 대해 상기 편집 명령 3이 적용되는 좌표 값을 우측 방향으로 두 번 이동시켜 [2, 2]라는 좌표 값으로 변경할 수 있다.
즉, 상기 마크업 언어 기반 문서 상에서 가장 좌측 지점에 "b"를 삽입하라는 상기 편집 명령 2, 두 번째 좌측지점에 "a"를 삽입하라는 상기 편집 명령 1과, 가장 좌측 지점에 "c"를 삽입하라는 상기 편집 명령 3의 적용 지점을 중복되지 않도록 하기 위해서, 편집명령전송부(19123)는 상기 버퍼의 큐에 가장 늦게 저장된 상기 편집 명령 3에 대해 적용 지점을 가장 좌측 지점에서 두 칸 우측 이동한 지점으로 변경하는 운영변환을 수행할 수 있다.
그러고 나서, 편집명령전송부(19123)는 상기 운영변환이 완료된 상기 편집 명령 3을 각 제1 단말기(200) 및 제2 단말기(300)로 전송할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 3이 수신되면, "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 3에 대응하는 고유 시리얼 번호를 확인하여 "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-1 사용자의 제2-1 단말기(300)의 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 3과 동일한 편집 명령이 적용되어 있지 않기 때문에 제2-1 사용자의 제2-1 단말기(300)는 상기 편집 명령 3에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 3의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 3에 따른 편집 사항을 적용하여 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "bac1234"로 변경할 수 있다.
즉, 상기 편집 명령 3에 정의되어 있는 좌표 값은 [2, 2]로 상기 편집 명령 3는 세 번째 좌측 지점에 "c"를 삽입하도록 하는 편집 명령이므로, 제2-1 사용자의 제2-1 단말기(300)는 상기 브라우저 1을 통해 표시되고 있는 "ba1234"에서 세 번째 좌측 지점에 "c"를 삽입함으로써, 상기 브라우저 1을 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "bac1234"로 변경할 수 있다.
한편, 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 3이 수신되면, "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 3에 대응하는 고유 시리얼 번호를 확인하여 "ba1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제2-2 사용자의 제2-2 단말기(300)의 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 상기 편집 명령 3과 동일한 편집 명령이 적용되어 있지 않기 때문에 제2-2 사용자의 제2-2 단말기(300)는 상기 편집 명령 3에 정의되어 있는 상기 마크업 언어 기반 문서 상에서의 상기 편집 명령 3의 적용 위치와 연관된 좌표 값을 기초로 상기 편집 명령 3에 따른 편집 사항을 적용하여 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서를 "bac1234"로 변경할 수 있다.
즉, 상기 편집 명령 3에 정의되어 있는 좌표 값은 [2, 2]로 상기 편집 명령 3은 세 번째 좌측 지점에 "c"를 삽입하도록 하는 편집 명령이므로, 제2-2 사용자의 제2-2 단말기(300)는 상기 브라우저 2를 통해 표시되고 있는 "ba1234"에서 세 번째 좌측 지점에 "c"를 삽입함으로써, 상기 브라우저 2를 통해 표시되고 있는 상기 마크업 언어 기반 문서의 편집 상태를 "bac1234"로 변경할 수 있다.
마지막으로, 제1 사용자의 제1 단말기(200)는 상기 편집 명령 3이 수신되면, "bac1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
이때, 제1 사용자의 제1 단말기(200)는 상기 편집 명령 3에 대응하는 고유 시리얼 번호를 확인하여 "bac1234"라는 편집이 적용되어 있는 상기 마크업 언어 기반 문서 상에서 상기 편집 명령 3과 동일한 편집 명령이 이미 적용되어 있는지 여부를 판단할 수 있다.
제1 사용자의 제1 단말기(200)의 상기 브라우저 3을 통해 표시되고 있는 상기 마크업 언어 기반 문서에는 이미 상기 편집 명령 3과 동일한 편집 명령이 자체적으로 적용되어 있기 때문에 상기 마크업 언어 기반 문서에 대해 상기 수신된 편집 명령 3을 다시 적용할 필요가 없으므로, 제1 사용자의 제1 단말기(200)는 상기 수신된 편집 명령 3을 폐기함으로써, "bac1234"라는 편집 상태를 그대로 유지할 수 있다.
이렇게, 본 발명에 따른 문서의 동시 편집을 지원하는 협업편집부(191)는 각 제1 단말기(200) 및 제2 단말기(300)로부터 동시에 발생한 각 편집 명령들이 수신되면, 각 편집 명령들의 수신 순서에 기초하여 각 편집 명령들을 각 제1 단말기(200) 및 제2 단말기(300)에 대해 순차적으로 전송하되, 수신 순서가 늦은 편집 명령들에 대해서 운영변환을 수행함으로써, 각 제1 단말기(200) 및 제2 단말기(300)가 문서의 동시 편집을 지원하는 협업편집부(191)로부터 순차적으로 수신되는 각 편집 명령들을 각 제1 단말기(200) 및 제2 단말기(300) 내에 저장되어 있는 마크업 언어 기반 문서에 적용하게 되면, 각 제1 단말기(200) 및 제2 단말기(300)의 각 브라우저를 통해 표시되고 있는 각각의 마크업 언어 기반 문서의 편집 상태가 모두 동일한 "bac1234"가 되기 때문에, 제2-1 사용자, 제2-2 사용자, 제1 사용자는 하나의 문서에 대해 동시 편집을 수행할 수 있게 된다.
본 발명의 일 실시예에서는 각 제1 단말기(200) 및 제2 단말기(300)가 각 제1 단말기(200) 및 제2 단말기(300)에 탑재되어 있는 브라우저를 통해서 웹을 기반으로 문서에 대한 동시 편집을 수행하는 환경을 가정하였기 때문에 각 제1 단말기(200) 및 제2 단말기(300)들이 문서의 동시 편집을 지원하는 협업편집부(191)로부터 마크업 언어 기반 문서를 수신하여 상기 마크업 언어 기반 문서에 대해 동시 편집을 수행하는 상황을 예로 설명하였다. 하지만, 상기 마크업 언어 기반 문서를 이용하여 동시 편집 처리를 수행하는 실시예는 본 발명의 일실시예에 불과한 것일 뿐, 본 발명은 마크업 언어 기반 문서에 한정되지 않고, "docx", "hwp"와 같은 확장자를 갖는 일반 설치형 문서 작성 프로그램에서 활용되는 문서 등과 같이 전자적 형태의 문서에 대해서 모두 적용이 가능하다.
본 발명에 따른 협업편집부(191)가 제1 단말기(200) 및 제2 단말기(300) 간 문서 상의 동시 편집을 지원하는 단계는 아래와 같다.
제1 단계에서는 문서에 대한 협업 세션에 참가한 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 의해 상기 문서에 대한 편집과 연관된 편집 명령들이 동시에 인가되면, 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들 각각으로부터 상기 문서에 대해서 동시에 인가된 각 편집 명령들을(상기 각 편집 명령들에는 상기 각 편집 명령들의 상기 문서 상에서의 적용 위치와 연관된 좌표 값이 정의되어 있음)수신한다.
제2 단계에서는 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들 각각으로부터 수신된 상기 각 편집 명령들을 그 수신 순서에 따라 하나씩 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 순차적으로 전송하되, 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송될 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 수신된 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송한다.
이때, 본 발명의 일실시예에 따르면, 제2 단계에서는 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들 각각으로부터 수신된 상기 각 편집 명령들을 그 수신 순서에 기초하여 버퍼의 큐에 저장하는 단계, 상기 버퍼의 큐에 상기 각 편집 명령들이 모두 저장되면, 상기 버퍼의 큐로부터 상기 각 편집 명령들을 상기 버퍼의 큐에서의 저장 순서에 따라 하나씩 추출하는 단계 및 상기 버퍼의 큐에서 상기 각 편집 명령들이 하나씩 추출될 때마다, 상기 하나씩 추출된 상기 각 편집 명령들을 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송하되, 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송될 상기 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 상기 버퍼의 큐에 저장된 상기 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 상기 복수개의 제1 단말기(200) 및 제2 단말기(300)들에 전송하는 단계를 포함할 수 있다.
정리하면, 본 발명에 따른 서버(100)는, 제1 단말기(200) 및 제2 단말기(300) 간 문서의 협업 편집 서비스를 제공하는 협업편집부(191)를 포함한다.
협업편집부(191)는, 제1 단말기(200) 및 제2 단말기(300)로부터 상기 문서에 대해서 인가된 편집 명령들을 수신하는 편집명령수신부(1911) 및 제1 단말기(200) 및 제2 단말기(300)로부터 수신된 상기 편집 명령들을 수신 순서에 따라 하나씩 제1 단말기(200) 및 제2 단말기(300)로 순차적으로 전송하되, 제1 단말기(200) 및 제2 단말기(300)에 전송될 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 수신된 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환(Operational Transformation)을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 제1 단말기(200) 및 제2 단말기(300)로 전송하는 편집명령처리부(1912)를 포함한다.
편집명령처리부(1912)는, 제1 단말기(200) 및 제2 단말기(300)로부터 수신된 상기 편집 명령들을 수신 순서에 기초하여 버퍼의 큐(Queue)에 저장하는 편집명령저장부(19121), 상기 버퍼의 큐에 상기 편집 명령들이 저장되면, 상기 버퍼의 큐로부터 상기 편집 명령들을 상기 버퍼의 큐에서의 저장 순서에 따라 추출하는 편집명령추출부(19122) 및 상기 버퍼의 큐에서 상기 편집 명령들이 추출될 때, 추출된 상기 편집 명령들을 제1 단말기(200) 및 제2 단말기(300)로 전송하되, 제1 단말기(200) 및 제2 단말기(300)에 전송될 상기 현재 순번의 편집 명령에 대해서 상기 현재 순번의 편집 명령보다 먼저 상기 버퍼의 큐에 저장된 상기 이전 순번의 편집 명령이 존재하는 경우, 상기 이전 순번의 편집 명령의 상기 문서 상에서 적용 위치와 연관된 좌표 값을 기초로 상기 현재 순번의 편집 명령이 상기 문서 상에서 적용될 위치에 대한 좌표 값에 대해 운영변환을 수행한 후 운영변환이 완료된 상기 현재 순번의 편집 명령을 제1 단말기(200) 및 제2 단말기(300)로 전송하는 편집명령전송부(19123)를 포함하여, 운영변환 기반 실시간 협업 편집 서비스 제공이 가능하다.
도 6은 본 발명에 따른 멘토 플랫폼 제공 방법을 보여주는 흐름도이다.
본 발명에 따른 멘토 플랫폼 제공 방법은, 도 6을 참조하면,
제1 단말기(200)들로부터 각각 상기 제1 사용자의 정보를 수신하며, 상기 제1 사용자 각각을 멘토로 등록하는 단계(S101), 상기 제2 단말기(300)들로부터 각각 상기 제2 사용자의 정보를 수신하며, 상기 제2 사용자 각각을 멘티로 등록하는 단계(S103), 상기 제1 사용자의 정보를 기반으로 멘토정보를 생성하고, 상기 제2 사용자의 정보를 기반으로 멘티정보를 생성하며, 생성한 복수개의 멘토정보 중 상기 멘티정보와 매칭되는 멘토정보를 선택하여 선택된 멘토정보를 기반으로 추천멘토정보를 생성하는 단계(S105), 상기 제2 단말기(300)로 상기 추천멘토정보를 송신하여 상기 멘티에게 멘토를 추천하는 단계(S107), 상기 제2 단말기(300)로부터 멘토링 비용을 결제받는 단계(S109), 상기 제1 단말기(200) 및 상기 제2 단말기(300)로 멘토링 일정을 제공하는 단계(S111) 상기 제1 단말기(200) 및 상기 제2 단말기(300)로부터 멘토링이 종료된 정보를 수신하는 단계(S113) 및 상기 일정종료부(170)가 멘토링이 종료된 정보를 수신하면, 상기 멘토링 비용을 상기 제1 단말기(200)로 지급하는 단계(S115)를 포함한다. 각 단계에서의 상세한 설명은 전술한 바와 같다.
한편, 상술한 본 발명의 일실시예에 따른 멘토링 플랫폼 제공 시스템(1000)이 실시되기 위한 하드웨어적인 수단들은, 도 7에 도시된 바와 같은 케이스(C)에 설치될 수 있다. 일 실시예로서, 본 멘토링 플랫폼 제공 시스템(1000)의 서버(100)는 도 7에 도시되는 케이스(C)에 설치될 수 있다. 한편, 케이스(C) 내부에는 케이스(C) 내부의 폭발 등으로 인한 화염 또는 외부에서 발생한 화재 등으로 인한 케이스(C)로 유입되는 화염을 방지할 수 있는 방염 구조가 설치될 수 있다. 상기 방염 구조는 도 7에 도시된 바와 같이, 케이스(C)의 일측에 설치되는 제1샤프트(S1), 방염직물(F)이 권취되며 일측에는 볼스크류(미도시)의 일측이 연결되는 제2샤프트(S2), 화염을 방지할 수 있도록 아라미드/면 혼방 재질로 마련되어 제2샤프트(S2)에 귄취되되 볼스크류(미도시)가 회전하는 것에 의해 제2샤프트(S2)가 직선 이동하는 경우 권출되어 케이스(C)의 일측을 커버하는 방염직물(F), 제2샤프트(S2)에 설치되며 회전력을 제공하는 제2샤프트(S2)를 직선 이동시키는 볼스크류(미도시) 및 모터(미도시) 등으로 구성될 수 있다. 한편, 모터(미도시)는 폭발 또는 화재가 발생하는 경우 외부의 경고 신호를 전달 받아 연동되도록 구성할 수 있다. 상술한 방염 구조는 케이스는 6면에 각각 모두 설치될 수도 있고, 팬, 방열 구멍 등 케이스와 외부가 연통되는 영역이 다수 존재하는 면에만 설치될 수도 있다. 상술한 바와 같은 방염 구조에 따르면, 케이스(C) 내부의 폭발 등으로 인한 화염이 외부로 유출되는 것이 방지될 수 있고, 외부에서 발생한 화재 등으로 인해 케이스(C)로 유입되는 화염을 효과적으로 방지하여 서버 시스템을 화재, 폭발로 부터 효과적으로 막아 데이터 유실 등을 최소화할 수 있는 효과가 있다.
한편, 본 발명의 일 실시 예에 있어서, 멘토링 플랫폼 제공 시스템(1000) 내 서버(100)는 클라우드 컴퓨팅을 위한 클라우드 서버일 수 있으며, 메인 노드 및 복수의 계산 노드를 포함할 수 있다. 또한, 계산 노드 각각은 하이브리드 가속기들을 포함할 수 있다.
후술하는 방법에 의하면, 기존 클라우드 컴퓨팅시 발생할 수 있는 종래 문제점인, 작업 유닛에 배치된 하이브리드 가속기 외의 다른 하이브리드 가속기를 위한 라이브러리들이 포함되어 불필요하게 더 많은 메모리를 사용하게 되고, 이에 따라, 컴퓨팅 요청을 처리하기 위한 준비 시간이 길어지고 동시에 처리할 수 있는 컴퓨팅 요청 수가 줄어들어 클라우드 시스템의 전체 처리량이 감소하는 문제점을 해결할 수 있다.
메인 노드가 단말로부터 컴퓨팅 요청을 수신하면 요청 대기줄(request queue)에 대기시키고 작업 스케줄러가 모든 요청의 요구사항을 충족할 수 있도록 각 요청에 대해서 사용 가능한 계산 노드, 하이브리드 가속기를 포함한 컴퓨팅 자원을 할당하고 처리 순서를 결정하는데 이러한 일련의 과정을 스케줄이라고 한다.
스케줄 이후에는 컴퓨팅 요청을 처리할 수 있도록 실행 가능한 바이너리, 라이브러리 등을 포함한 컴퓨팅 유닛을 생성해야 한다. 생성된 컴퓨팅 유닛은 계산 노드로 전달되어 계산 노드의 작업 대기줄(task queue)에서 실행 차례를 기다린다. 할당된 컴퓨팅 자원을 사용(가속기의 작동을 포함)하여 작업을 완료한 후에는 사용자에게 작업 결과를 전달하고, 계산 노드의 작업 대기줄에서 해당 엔트리를 제거하고 메인 노드의 요청 대기줄의 엔트리도 제거한다.
사용자의 새로운 컴퓨팅 요청이 있는 경우, 현재의 컴퓨팅 자원으로 요구 사항을 충족할 수 없다면 작업 스케줄러가 현재 처리 중인 컴퓨팅 유닛의 실행을 중단하고 컴퓨팅 유닛을 다시 생성할 수 있다. 이 경우, 다시 생성되는 컴퓨팅 유닛은 기존의 컴퓨팅 유닛을 활용한 것일 수 있으며, 기존의 컴퓨팅 유닛은 1) 동일 계산 노드 내의 다른 하이브리드 가속기들, 2) 다른 계산 노드의 동일 하이브리드 가속기들, 3) 다른 계산 노드의 다른 하이브리드 가속기들을 할당 받을 수 있다.
본 발명의 일 실시 예에 따르면, 단말(제1 단말기(200) 또는 제2 단말기(300))로부터 제1 컴퓨팅 요청을 수신하여 전체 하이브리드 가속기들 각각에 대한 디바이스 코드를 컴파일하는 단계; 상기 제1 컴퓨팅 요청에 기반하여 제1 계산 노드 및 제1 하이브리드 가속기들을 할당하는 단계; 상기 할당된 제1 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리를 포함하는 컴퓨팅 유닛을 생성하고, 상기 할당된 제1 하이브리드 가속기들을 제외한 전체 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리를 포함하는 전역 데이터를 생성 및 저장하는 단계; 상기 저장된 전역 데이터에서 상기 할당된 제1 하이브리드 가속기들을 제외한 상기 할당된 제1 계산 노드의 모든 하이브리드 가속기들의 디바이스 코드 및 라이브러리를 포함하는 지역 캐싱 데이터를 생성하는 단계; 상기 생성된 컴퓨팅 유닛 및 지역 캐싱 데이터를 상기 할당된 제1 계산 노드에 송신하고 상기 컴퓨팅 유닛이 실행되도록 하여 상기 할당된 제1 하이브리드 가속기들을 작동시키고, 상기 지역 캐싱 데이터가 임시 저장되도록 하는 단계; 및 제2 컴퓨팅 요청을 수신하여 상기 컴퓨팅 유닛의 실행이 중단되도록 하고 상기 제2 컴퓨팅 요청에 기반하여 상기 컴퓨팅 유닛의 동작을 결정하는 단계;를 포함하는 것을 특징으로 한다.
사용자로부터의 컴퓨팅 요청이 메인 노드의 요청 대기줄에 도착하면 소스 코드를 하이브리드 가속기용 컴파일러를 이용하여 하이브리드 컴퓨팅 클라우드에서 지원하는 모든 하이브리드 가속기들에 대해서 각각 디바이스 코드를 컴파일하고 서로 다른 섹션에 저장해서 하나의 팻(FAT) 바이너리를 생성한다.이때, 각각의 디바이스 코드들은 팻 바이너리의 서로 다른 섹션에 저장된다.
작업 스케줄러가 해당 컴퓨팅 요청이 사용할 계산 노드 및 하이브리드 가속기들을 할당하면 메인 노드의 바인더가 GNU 바이너리 유틸리티를 이용하여 팻 바이너리에서 할당된 하이브리드 가속기들에 대한 디바이스 코드만을 남겨 두고, 상기 팻 바이너리와 할당된 하이브리드 가속기들에서 작업을 수행하기 위해 필요한 라이브러리들을 조립하여 컴퓨팅 유닛을 생성한다. 또한, 바인더는 팻 바이너리의 분리한 다른 섹션들은 비동기적으로 메인 노드의 전역 저장소에 저장한다.
생성된 컴퓨팅 유닛은 할당된 계산 노드에 전달되고, 바인더는 전역 저장소에 할당된 계산 노드에 장착된 다른 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리들을 할당된 계산 노드의 지역 저장소 캐시에 캐싱한다.
계산 노드는 전달받은 컴퓨팅 유닛을 작업 대기줄 엔트리에 저장하고 순서를 기다려 컴퓨팅 유닛을 처리한다. 컴퓨팅 유닛이 작업을 정상적으로 완료하면 계산 노드의 작업 대기줄 및 지역 저장소 캐시, 메인 노드의 전역 저장소 및 요청 대기줄의 엔트리들을 삭제한다.
상술한 일련의 과정을 통해 컴퓨팅 유닛은 스케줄 이후에 별도의 시간 소모 없이 실행에 필요한 디바이스 코드 및 라이브러리만을 가지게 된다.
본 발명의 일 실시 예에 있어서, 메인 노드 및/또는 계산 노드는 하이브리드 가속기용 컴파일러, 작업 스케줄러, 바인더(binder), GNU 바이너리 유틸리티, 전역 저장소, 리바인더 및/또는 지역 저장소 캐시를 포함할 수 있다.
하이브리드 가속기용 컴파일러는 소스 코드 중 디바이스 커널 부분을 하이브리드 클라우드 컴퓨팅 시스템에서 지원하는 하이브리드 가속기들을 대상으로 디바이스 코드로 컴파일하고, 각 대상 하이브리드 가속기 별로 구분되는 섹션(section)에 탑재, 호스트 코드와 비다이스 코드들을 팻(FAT) 바이너리 형태로 컴파일한다.
작업 스케줄러는 단말로부터의 컴퓨팅 요청에 기반하여 하이브리드 가속기, 메모리, 스토리지 같은 자원을 할당하고, 컴퓨팅 요청의 처리 순서를 결정한다.
바인더(binder)는 작업 스케줄러가 특정 컴퓨팅 요청에 대해 스케줄 하면, 결정된 사항에 따라 컴퓨팅 유닛을 생성한다. GNU 바이너리 유틸리티 및 전역 저장소를 포함한다.
GNU 바이너리 유틸리티는 팻(FAT) 바이너리를 대상으로 특정 섹션(즉, 디바이스 코드)을 추출, 삭제, 수정하는 기능을 제공한다.
전역 저장소(global repository)는 컴퓨팅 유닛에 할당된 하이브리드 가속기 이외의 하이브리드 컴퓨팅 클라우드에서 지원하는 하이브리드 가속기들 전체에 대한 디바이스 코드들과 라이브러리들을 저장한다. 또한, 할당된 계산 노드에서 지원하는 하이브리드 가속기들에 대한 디바이스 코드들과 라이브러리들을 지역 저장소 캐시에 캐싱한다.
리바인더(rebinder)는 컴퓨팅 노드에 제공되며, 작업 스케줄러가 실행 중인 특정 컴퓨팅 유닛이 사용하는 하이브리드 가속기를 다른 하이브리드 가속기를 사용하도록 할당을 변경할 때, 기존 하이브리드 가속기에서 컴퓨팅을 위해 필요한 디바이스 코드들과 라이브러리들을 제거하고 지역 저장소 캐시에서 새로운 하이브리드 가속기를 위한 디바이스 코드들 및 라이브러리들을 로드하여 컴퓨팅 유닛에 재조립한다. GNU 바이너리 유틸리티, 지역 저장소 캐시를 포함한다.
지역 저장소 캐시(local repository cache)는 컴퓨팅 노드에 제공되며, 현재 실행 중인 또는 실행 대기 중인 컴퓨팅 유닛들이 현재 할당된 하이브리드 가속기 외의 계산 노드에서 지원하는 하이브리드 가속기들에 대한 컴퓨팅을 위해 필요한 디바이스 코드들 및 라이브러리를 캐싱한다. 작업이 완료되거나 컴퓨팅 유닛이 다른 계산 노드로 재할당되면 관련 디바이스 코드들과 라이브러리들을 캐시 엔트리에서 제거한다.
본 발명의 일 실시 예에 있어서, 구체적인 컴퓨팅 요청의 처리 과정은 다음과 같으며 이는 관련된 기재 부분에서 상술한 바와 같다.
사용자로부터의 컴퓨팅 요청이 메인 노드의 요청 대기줄에 도착하면 소스 코드를 하이브리드 가속기용 컴파일러를 이용하여 하이브리드 컴퓨팅 클라우드에서 지원하는 모든 하이브리드 가속기들에 대해서 각각 디바이스 코드를 컴파일하고 서로 다른 섹션에 저장해서 하나의 팻(FAT) 바이너리를 생성한다. 각각의 디바이스 코드들은 팻 바이너리의 서로 다른 섹션에 저장된다.
작업 스케줄러가 해당 컴퓨팅 요청이 사용할 계산 노드 및 하이브리드 가속기들을 할당하면 메인 노드의 바인더가 GNU 바이너리 유틸리티를 이용하여 팻 바이너리에서 할당된 하이브리드 가속기들에 대한 디바이스 코드만을 남겨 두고, 상기 팻 바이너리와 할당된 하이브리드 가속기들에서 작업을 수행하기 위해 필요한 라이브러리들을 조립하여 컴퓨팅 유닛을 생성한다. 또한, 바인더는 팻 바이너리의 분리한 다른 섹션들은 비동기적으로 메인 노드의 전역 저장소에 저장한다.
생성된 컴퓨팅 유닛은 할당된 계산 노드에 전달되고, 바인더는 전역 저장소에 할당된 계산 노드에 장착된 다른 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리들을 할당된 계산 노드의 지역 저장소 캐시에 캐싱한다.
계산 노드는 전달받은 컴퓨팅 유닛을 작업 대기줄 엔트리에 저장하고 순서를 기다려 컴퓨팅 유닛을 처리한다. 컴퓨팅 유닛이 작업을 정상적으로 완료하면 계산 노드의 작업 대기줄 및 지역 저장소 캐시, 메인 노드의 전역 저장소 및 요청 대기줄의 엔트리들을 삭제한다.
상술한 일련의 과정을 통해 컴퓨팅 유닛은 스케줄 이후에 별도의 시간 소모 없이 실행에 필요한 디바이스 코드 및 라이브러리 만을 가지게 된다.
이하에서는 메인 노드가 단말로부터 새로운 컴퓨팅 요청을 수신한 경우에 대한 요청 처리 과정에 대해 설명한다.
본 발명의 일 실시 예에 있어서, 상기 제2 컴퓨팅 요청에 기반한 상기 컴퓨팅 유닛의 동작의 결정은, 상기 제2 컴퓨팅 요청에 기반하여 제2 계산 노드 및 제2 하이브리드 가속기들을 할당하되, 상기 제1 계산 노드 및 제2 계산 노드가 동일한지 여부 및 상기 제1 하이브리드 가속기들 및 상기 제2 하이브리드 가속기들이 동일한지 여부를 판단하여 상기 컴퓨팅 유닛의 동작을 결정하는 것을 특징으로 한다.
메인 노드가 단말로부터 새로운 컴퓨팅 요청을 수신하면 기존에 하이브리드 가속기들을 작동시키고 있던 컴퓨팅 유닛의 실행이 중단되고, 새로운 컴퓨팅 요청에 기반하여 다시 계산 노드 및 하이브리드 가속기들을 할당하게 되며, 상기 할당은 (1) 동일 계산 노드 내의 다른 하이브리드 가속기들, (2) 다른 계산 노드의 동일 하이브리드 가속기들, (3) 다른 계산 노드의 다른 하이브리드 가속기들의 경우로 나누어지게 되고, 각 경우 별로 기존 컴퓨팅 유닛의 이후 동작이 달라지게 된다.
다시 말하면, 원래의 컴퓨팅 요청(제1 컴퓨팅 요청)에 기반하여 할당된 계산 노드(제1 계산 노드) 및 하이브리드 가속기들(제1 하이브리드 가속기들)과, 새로운 컴퓨팅 요청(제2 컴퓨팅 요청)에 기반하여 새로 할당된 계산 노드(제2 계산 노드) 및 하이브리드 가속기들(제2 하이브리드 가속기들)의 동일 여부를 각각 판단하여 상술한 바와 같은 (1) 내지 (3)의 경우 별로 기존 컴퓨팅 유닛의 이후 동작이 달라지게 된다.
아래에서는, 본 발명의 일 실시 예에 따른 컴퓨팅 유닛이 동일 계산 노드 내의 다른 하이브리드 가속기를 할당 받는 경우의 컴퓨팅 유닛 동적 재조립 과정을 설명한다.
본 발명의 일 실시 예에 있어서, 상기 판단에 있어서, 상기 제1 계산 노드 및 상기 제2 계산 노드가 동일하고 상기 제1 하이브리드 가속기들 및 상기 제2 하이브리드 가속기들이 동일하지 않은 경우, 상기 컴퓨팅 유닛은 상기 제1 계산 노드에서, 상기 제1 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리가 제거되고 상기 제1 계산 노드에 임시 저장된 상기 지역 캐싱 데이터를 사용하여 상기 제2 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리를 포함하도록 다시 생성되며, 상기 다시 생성된 컴퓨팅 유닛이 실행되도록 하여 상기 할당된 제2 하이브리드 가속기들을 작동시키는 것을 특징으로 한다.
상기 (1)의 경우에 해당하며, 동일한 계산 노드 내의 다른 하이브리드 가속기들을 할당 받는 경우, 계산 노드의 리바인더는 컴퓨팅 유닛에서 이전에 할당 받은 하이브리드 가속기를 위한 디바이스 코드들 및 라이브러리들을 GNU BIN 유틸리티를 이용하여 제거하고 지역 저장소 캐시에서 새로운 하이브리드 가속기를 위한 디바이스 코드들과 라이브러리들을 로드하여 컴퓨팅 유닛을 재조립(즉, 다시 생성)한다. 이렇게 재조립된 컴퓨팅 유닛은 다시 계산 노드의 작업 대기줄로 보내진다.
아래에서는, 본 발명의 일 실시 예에 따른 컴퓨팅 유닛이 다른 계산 노드 내의 동일 하이브리드 가속기를 할당 받는 경우의 컴퓨팅 유닛 동적 재조립 과정을 설명한다.
본 발명의 일 실시 예에 있어서, 상기 판단에 있어서, 상기 제1 계산 노드 및 상기 제2 계산 노드가 동일하지 않고 상기 제1 하이브리드 가속기들 및 상기 제2 하이브리드 가속기들이 동일한 경우, 상기 컴퓨팅 유닛은 상기 제1 계산 노드에서 상기 제2 계산 노드로 전송되고, 상기 전송된 컴퓨팅 유닛이 실행되도록 하여 상기 할당된 제2 하이브리드 가속기들을 작동시키는 것을 특징으로 한다.
상기 (2)의 경우에 해당하며, 다른 계산 노드 내의 동일한 하이브리드 가속기들을 할당 받는 경우, 컴퓨팅 유닛은 상태 변화 없이 원래의 계산 노드(제1 계산 노드)에서 다른 계산 노드(제2 계산 노드)의 작업 대기줄로 보내진다.
아래에서는, 본 발명의 일 실시 예에 따른 컴퓨팅 유닛이 다른 계산 노드 내의 다른 하이브리드 가속기를 할당 받는 경우의 컴퓨팅 유닛 동적 재조립 과정을 설명한다.
본 발명의 일 실시 예에 있어서, 상기 판단에 있어서, 상기 제1 계산 노드 및 상기 제2 계산 노드가 동일하지 않고 상기 제1 하이브리드 가속기들 및 상기 제2 하이브리드 가속기들이 동일하지 않은 경우, 상기 컴퓨팅 유닛은 상기 제1 계산 노드로부터 수신되고, 상기 제1 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리가 제거되고 상기 전역 데이터를 사용하여 상기 할당된 제2 하이브리드 가속기들에 대한 디바이스 코드 및 라이브러리를 포함하도록 다시 생성되며, 상기 다시 생성된 컴퓨팅 유닛은 상기 제2 계산 노드에 송신되고 상기 다시 생성된 컴퓨팅 유닛이 실행되도록 하여 상기 할당된 제2 하이브리드 가속기들을 작동시키는 것을 특징으로 한다.
상기 (3)의 경우에 해당하며, 다른 계산 노드 내의 다른 하이브리드 가속기들을 할당 받는 경우, 컴퓨팅 유닛은 계산 노드에서 메인 노드의 바인더로 전달되고 바인더는 전역 저장소에서 새롭게 할당 받은 하이브리드 가속기들(제2 하이브리드 가속기들)에 대한 디바이스 코드들 및 라이브러리들로 컴퓨팅 유닛을 재조립(즉, 다시 생성)한다. 이렇게 재조립된 컴퓨팅 유닛은 새롭게 할당된 계산 노드(제2 계산 노드)의 작업 대기줄로 보내진다.
상술한 바와 같은 동적 재조립 방법을 통해 컴퓨팅 유닛이 새로운 하이브리드 가속기로 재할당되는 경우에도 다시 컴파일할 필요 없이 적은 비용으로 새로운 하이브리드 가속기에서의 컴퓨팅에 필요한 디바이스 코드들 및 라이브러리들을 전달 가능하다.
종래의 JIT 컴파일 방법은 동적 컴파일을 수행하기 위해 스케줄 이후에 시간이 추가로 소요되고 작업 유닛에 컴파일러 모듈이 포함되어 더 많은 메모리를 사용한다. 또한, 작업 유닛이 다른 하이브리드 가속기를 사용하도록 변경되면 다시 컴파일해야 하는 문제점이 있다. 본 발명의 일 실시 예에 따른 하이브리드 컴퓨팅 클라우드(서버(100))의 컴퓨팅 유닛 동적 재조립 방법은 작동시키는 하이브리드 가속기들을 변경시키는 새로운 컴퓨팅 요청을 수행하는 과정에서 컴파일이 필요하지 않다는 점을 확인할 수 있다.
종래의 팻(FAT) 바이너리 형태의 컴파일 방법은 배치된 하이브리드 가속기 외의 다른 하이브리드 가속기를 위한 디바이스 코드들이 포함되어 불필요하게 메모리를 사용하는 문제점이 있다. 상술한 (1) 내지 (3)의 어떤 경우에도 종래의 팻 바이너리 형태의 컴파일 방법은 컴퓨팅 유닛의 생성 및 계산 노드로의 전달 시 전체 하이브리드 가속기에 대한 디바이스 코드들 및 라이브러리들이 모두 포함된다는 점에서 차이가 있음을 알 수 있다.
지금까지 살펴본 바와 같이, 본 발명의 실시 예에 따르면, 단말 장치로부터 컴퓨팅 요청을 처리할 시, 스케줄 이후에 추가적인 시간 소모나 불필요한 메모리 사용을 하지 않도록 컴퓨팅 유닛에 필요한 요소만 조립하고, 컴퓨팅 유닛이 다른 하이브리드 가속기를 사용하도록 스케줄이 변경된 경우 다시 컴파일하거나 불필요한 요소들이 포함되지 않도록 필요한 요소를 동적으로 재조립하는 것이 가능하다. 이에 따라, 줄어든 디바이스 코드, 라이브러리의 크기만큼 데이터 전송 속도가 빨라지고, 하이브리드 컴퓨팅 클라우드 전체적으로 동시에 처리할 수 있는 컴퓨팅 요청 수가 늘어나게 되어 클라우드의 처리량이 향상되는 효과를 제공한다.
본 발명에 따른 제1 단말기(200) 및 제2 단말기(300)는 키보드, 마우스, 터치패드, 터치 스크린 등의 입력수단과, 디스플레이 화면을 구비한 데스크탑 PC, 노트북 PC, 태블릿 PC, 스마트폰 등의 단말기로서, 이에 한정되는 것은 아니고, 통신망을 통해 서버(100)에 접속할 수 있으며, 검색 정보 및 선택 정보의 입력과, 검색된 결과 정보를 디스플레이할 수 있는 애플리케이션 프로그램의 설치가 가능한 디지털 정보의 처리가 가능한 구성이면 모두 포함될 수 있다. 본 발명에 따른 제1 단말기(200) 및 제2 단말기(300)는 서버(100)에 통신망을 통해 접속하여 정보를 송수신하는 구성요소로서, 예를 들면 스마트폰(smartphone), 태블릿 PC(tablet personalcomputer), 이동 전화기(mobile phone), 영상 전화기, 데스크탑 PC(desktoppersonal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), 웨어러블 장치(wearable device)(예: 스마트 안경, 머리 착용형 장치(head-mounted-device(HMD) 등), 무인단말기(kiosk) 또는 스마트 와치(smart watch)) 중 적어도 하나를 포함할 수 있다.
본 발명에 따른 제1 단말기(200) 및 제2 단말기(300)와 서버(100)는 각각이 구비한 통신부 및 통신망을 통해 통신할 수 있다. 통신망은 단말들 및 서버(100)들과 같은 각각의 노드 상호간에 정보 교환이 가능한 연결구조를 의미하는 것으로, 이러한 통신망의 일 예에는, 3GPP(3rd Generation Partnership Project) 네트워크, LTE(Long Term Evolution) 네트워크, 5G 네트워크, WIMAX(World Interoperability for Microwave Access) 네트워크, 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), wifi 네트워크, 블루투스(Bluetooth) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다. 단말기*와 서버(100)*가 각각 구비한 통신부는, 전술한 통신망을 통한 유무선 데이터 통신을 수행할 수 있도록 상기 통신망을 위해 구비된 전자 부품을 포함할 수 있다.
본 발명에 따른 데이터베이스서버(1904)는 데이터베이스 관리 시스템(이하, DBMS)을 포함할 수 있다. DBMS는 다수의 사용자들이 데이터베이스부 내의 데이터에 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. DBMS는 IMS, CODASYL DB, DB2, ORACLE, INFORMIX, SYBASE, INGRES, MS-SQL, Objectivity, O2, Versanat, Ontos, Gemstone, Unisql, Object Store, Starburst, Postgres, Tibero, MySQL 또는 MS-access등을 포함할 수 있다. DBMS는 특정 명령어의 입력에 따라 해당하는 특정 데이터에 접근하는 것이 가능하다.
본 명세서에서 서버(100) 및 그 서버(100)가 포함하는 각 구성은 메모리에 저장된 연속된 수행과정들을 실행하는 프로세서들일 수 있다. 또는, 프로세서에 의해 구동되고 제어되는 소프트웨어 모듈들로서 동작할 수 있다. 나아가, 프로세서는 하드웨어 장치일 수 있다.
참고로, 본 발명의 일 실시예에 따른 멘토 플랫폼 제공 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독가능매체에 기록될 수 있다. 상기 컴퓨터 판독가능매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용가능한 것일 수도 있다. 컴퓨터 판독가능매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체, 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급언어코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1개의 유닛이 2개 이상의 하드웨어를 이용하여 실현되어도 되고, 2개 이상의 유닛이 1개의 하드웨어에 의해 실현되어도 된다.
본 발명의 보호범위가 이상에서 명시적으로 설명한 실시예의 기재와 표현에 제한되는 것은 아니다. 또한, 본 발명이 속하는 기술분야에서 자명한 변경이나 치환으로 말미암아 본 발명이 보호범위가 제한될 수도 없음을 다시 한 번 첨언한다.
100 : 서버 110 : 멘토등록부
120 : 멘티등록부 130 : 매칭부
140 : 송신부 150 : 비용결제부
160 : 일정등록부 170 : 일정종료부
180 : 대금지급부 190 : 영상서비스부
1901 : 서비스서버 1902 : 턴/스턴서버
1903 : 오엔엠서버 1904 : 데이터베이스서버
1905 : 코어서버 1906 : 푸쉬서버
1907 : 로긴에스에스오게이트웨이 191 : 협업편집부
1911 : 편집명령수신부 1912 : 편집명령처리부
19121 : 편집명령저장부 19122 : 편집명령추출부
19123 : 편집명령전송부 200 : 제1 단말기
300 : 제2 단말기 400 : SNS 서버
1000 : 멘토링 플랫폼 제공 시스템
120 : 멘티등록부 130 : 매칭부
140 : 송신부 150 : 비용결제부
160 : 일정등록부 170 : 일정종료부
180 : 대금지급부 190 : 영상서비스부
1901 : 서비스서버 1902 : 턴/스턴서버
1903 : 오엔엠서버 1904 : 데이터베이스서버
1905 : 코어서버 1906 : 푸쉬서버
1907 : 로긴에스에스오게이트웨이 191 : 협업편집부
1911 : 편집명령수신부 1912 : 편집명령처리부
19121 : 편집명령저장부 19122 : 편집명령추출부
19123 : 편집명령전송부 200 : 제1 단말기
300 : 제2 단말기 400 : SNS 서버
1000 : 멘토링 플랫폼 제공 시스템
Claims (2)
- 서버와; 멘토(Mentor)로 활동하는 복수명의 제1 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제1 단말기; 및 상기 멘토로부터 멘토링을 제공받는 멘티(Mentee)로 활동하는 복수명의 제2 사용자가 각각 소지하며 상기 서버에 접속하는 복수개의 제2 단말기를 포함하는 멘토링 플랫폼 제공 시스템에 있어서,
상기 서버는,
상기 제1 단말기들로부터 각각 상기 제1 사용자의 정보를 수신하며, 상기 제1 사용자 각각을 멘토로 등록하는 멘토등록부;
상기 제2 단말기들로부터 각각 상기 제2 사용자의 정보를 수신하며, 상기 제2 사용자 각각을 멘티로 등록하는 멘티등록부;
상기 제1 사용자의 정보를 기반으로 멘토정보를 생성하고, 상기 제2 사용자의 정보를 기반으로 멘티정보를 생성하며, 생성한 복수개의 멘토정보 중 상기 멘티정보와 매칭되는 멘토정보를 선택하여 선택된 멘토정보를 기반으로 추천멘토정보를 생성하는 매칭부;
상기 제2 단말기로 상기 추천멘토정보를 송신하여 상기 멘티에게 멘토를 추천하는 송신부;
상기 제2 단말기로부터 멘토링 비용을 결제받는 비용결제부;
상기 제1 단말기 및 상기 제2 단말기로 멘토링 일정을 제공하는 일정등록부;
상기 제1 단말기 및 상기 제2 단말기로부터 멘토링이 종료된 정보를 수신하는 일정종료부; 및
상기 일정종료부가 멘토링이 종료된 정보를 수신하면, 상기 멘토링 비용을 상기 제1 단말기로 지급하는 대금지급부;
를 포함하며,
상기 멘토등록부가 상기 제1 단말기로부터 수신하는 상기 제1 사용자의 정보는,
상기 제1 사용자의 대학(大學) 재학증명서, 대학 성적증명서 또는 대학 졸업증명서를 포함하고,
상기 멘티등록부가 상기 제2 단말기로부터 수신하는 상기 제2 사용자의 정보는,
상기 제2 사용자의 진학 희망 대학 또는 상기 제2 사용자의 진학 희망 전공을 포함하며,
상기 매칭부는,
상기 제2 사용자의 진학 희망 대학 또는 진학 희망 전공과, 상기 제1 사용자의 재학 중인 대학, 재학 중인 전공, 졸업한 대학 또는 졸업한 전공을 비교하여 상기 추천멘토정보를 생성하고,
상기 송신부는, 상기 추천멘토정보를 상기 제2 단말기로 송신할 때, 복수개의 추천멘토정보를 리스트 형식으로 송신하며,
상기 시스템은,
SNS(Social Network Service) 서버를 더 포함하고,
상기 멘토등록부는, 상기 제1 단말기로부터 상기 제1 사용자의 SNS 계정 정보를 수신하고, 상기 계정을 기반으로 SNS 서버에서 상기 멘토의 비정형 데이터를 수집하며, 상기 멘토의 비정형 데이터를 기반으로 비정형멘토성향프로파일을 생성하고,
상기 멘티등록부는, 상기 제2 단말기로부터 상기 제2 사용자의 SNS 계정 정보를 수신하고, 상기 계정을 기반으로 SNS 서버에서 상기 멘티의 비정형 데이터를 수집하며, 상기 멘티의 비정형 데이터를 기반으로 비정형멘티성향프로파일을 생성하고,
상기 매칭부는, 상기 비정형멘토성향프로파일 및 상기 비정형멘티성향프로파일를 비교하여 비정형추천멘토정보를 생성하여, 상기 비정형추천멘토정보에 기초하여 상기 멘티에게 상기 멘티와 유사한 성향의 멘토를 추천하고,
상기 서버는,
상기 제1 단말기 및 상기 제2 단말기 간 WebRTC 기반 실시간 영상 통화 서비스 제공하는 영상서비스부를 더 포함하며,
상기 영상서비스부는,
상기 제2 단말기의 화면을 구성하는 서비스서버;
상기 제2 단말기가 방화벽 네트워크 상에서도 송수신이 가능하도록 하는 턴/스턴서버;
상기 제1 단말기의 화면을 구성하는 오엔엠서버;
상기 오엔엠서버와 연동하는 데이터베이스서버;
상기 서비스서버 및 상기 데이터베이스서버와 연동하는 코어서버;
상기 코어서버와 연동하며, 상기 제2 단말기 및 상기 제1 단말기를 포함하는 외부의 IOS 및 안드로이드 장치와 연동하기 위한 푸쉬서버; 및
상기 코어서버와 연동하며 외부의 네트워크와 연동하기 위한 로긴에스에스오게이트웨이를 포함하되,
상기 멘토등록부 및 상기 멘티등록부가 각각 수신하는 상기 제1 사용자의 SNS 계정 정보 및 상기 제2 사용자의 SNS 계정 정보는 각각, SNS 개설일을 포함하며,
상기 멘토등록부 및 상기 멘티등록부는 각각, 상기 SNS 개설일에 따라 가중치를 주어 상기 비정형멘토성향프로파일 및 상기 비정형멘티성향프로파일을 생성하고,
상기 멘토등록부 및 상기 멘티등록부가 각각 수집하는 상기 멘토의 비정형 데이터 및 상기 멘티의 비정형 데이터는 각각, 상기 제1 사용자 및 상기 제2 사용자의 감정 상태를 나타내는 단어를 포함하며,
상기 멘토등록부 및 상기 멘토등록부는 각각, 상기 멘토의 비정형 데이터 및 상기 멘티의 비정형 데이터를 수집할 때, 상기 제1 사용자 및 상기 제2 사용자의 피드에서 대학 진학과 유사한 단어가 포함된 경우, 상기 대학 진학과 유사한 단어가 포함된 피드에서 감성어를 추출하고, 추출한 감성어를 긍정 및 부정을 포함하는 감성 유형별로 분류하며, 상기 긍정 감성어에는 + 점수를 부여하고, 상기 부정 감성어에는 - 점수를 부여하여, 상기 비정형멘토성향프로파일 및 상기 비정형멘티성향프로파일을 생성하고,
상기 서버는,
상기 제1 단말기 및 상기 제2 단말기간 문서의 동시 편집을 지원하는 협업편집부를 더 포함하며,
상기 협업편집부는,
상기 제1 단말기 및 상기 제2 단말기로부터 각각 문서에 대한 편집 명령들을 수신하는, 편집명령수신부; 및
상기 편집명령수신부가 수신한 편집 명령들을 수신 순서에 따라 상기 제1 단말기 및 상기 제2 단말기로 송신하는, 편집명령처리부;
를 포함하고,
상기 편집명령처리부는,
상기 편집명령수신부가 수신한 편집 명령들을 수신 순서에 기초하여 버퍼에 저장하는, 편집명령저장부;
상기 버퍼에 상기 편집 명령들이 모두 저장되면 상기 버퍼로부터 상기 편집 명령들을 저장 순서에 따라 추출하는, 편집명령추출부; 및
상기 편집명령추출부가 상기 버퍼에서 추출한 상기 편집 명령들을 상기 제1 단말기 및 상기 제2 단말기로 송신하는, 편집명령전송부;
를 포함하며,
상기 편집 명령은 각각, 상기 각 편집 명령들의 상기 문서 상에서의 적용 위치와 연관된 좌표값이 정의되어 있고,
상기 제1 단말기 및 상기 제2 단말기는 각각, 상기 제1 단말기 및 상기 제2 단말기 내 상기 문서를 저장하고 있으며,
상기 편집 명령들을 수신한 상기 제1 단말기 및 상기 제2 단말기는 각각,
수신한 편집 명령들 중 상기 제1 단말기 및 상기 제2 단말기 각각에 저장되어 있는 문서에 자체적으로 적용되어 있는 편집 명령과 동일한 편집 명령이 존재하는 지 여부를 판단하고, 동일한 편집 명령이 존재하는 것으로 판단되면, 수신한 편집 명령들에서 상기 동일한 편집 명령을 제외한 후, 상기 수신된 편집 명령들 내에 정의되어 있는 문서 상에서의 적용 위치와 연관된 좌표 값을 기초로 수신한 편집 명령들에 따른 편집 사항을 상기 제1 단말기 및 상기 제2 단말기 내 각각 저장되어 있는 상기 문서 상에 적용하여 문서의 동시 편집이 가능하고,
상기 서버는,
케이스 내에 설치되고,
상기 케이스는,
볼스크류와, 상기 케이스의 일측에 설치되는 제1샤프트와, 상기 제1샤프트와 인접하게 배치되며 일측이 상기 볼스크류의 너트에 연결되는 제2샤프트와, 상기 제2샤프트에 권취되는 방염직물과, 상기 제2샤프트가 상기 제1샤프트로부터 이격되어 상기 케이스의 타측으로 직선 이동될 수 있도록 상기 볼스크류에 회전력을 제공하는 모터를 포함하고,
상기 제2샤프트는,
화재가 발생하는 경우, 상기 볼스크류의 회전에 의해 상기 제1샤프트로부터 이격되어 상기 케이스의 타측으로 직선 이동됨으로써 상기 방염직물을 권출시켜 상기 케이스의 일면을 커버하는 것을 특징으로 하는, 멘토링 플랫폼 제공 시스템. - 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220166747A KR102509469B1 (ko) | 2022-12-02 | 2022-12-02 | 멘토링 플랫폼 제공 시스템 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220166747A KR102509469B1 (ko) | 2022-12-02 | 2022-12-02 | 멘토링 플랫폼 제공 시스템 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102509469B1 true KR102509469B1 (ko) | 2023-03-14 |
Family
ID=85502829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220166747A KR102509469B1 (ko) | 2022-12-02 | 2022-12-02 | 멘토링 플랫폼 제공 시스템 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102509469B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101695228B1 (ko) | 2014-12-15 | 2017-01-11 | 한국과학기술정보연구원 | 멘토링 서비스 시스템 및 방법 |
KR20180094723A (ko) * | 2017-02-16 | 2018-08-24 | 주식회사 샐보 | 자연발화 및 금수성 물질 보관 케이스 및 이를 갖는 발화 감지 시스템 |
KR102462412B1 (ko) * | 2022-02-22 | 2022-11-01 | 주식회사 한국미래진로센터 | 멘토링 플랫폼 제공 시스템 및 그 방법 |
-
2022
- 2022-12-02 KR KR1020220166747A patent/KR102509469B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101695228B1 (ko) | 2014-12-15 | 2017-01-11 | 한국과학기술정보연구원 | 멘토링 서비스 시스템 및 방법 |
KR20180094723A (ko) * | 2017-02-16 | 2018-08-24 | 주식회사 샐보 | 자연발화 및 금수성 물질 보관 케이스 및 이를 갖는 발화 감지 시스템 |
KR102462412B1 (ko) * | 2022-02-22 | 2022-11-01 | 주식회사 한국미래진로센터 | 멘토링 플랫폼 제공 시스템 및 그 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10102772B2 (en) | Language learning exchange | |
Abdurrahman et al. | Pedagogical requirements for mobile learning: A review on MOBIlearn task model | |
Liu et al. | Drawing on mobile crowds via social media: Case UbiAsk: image based mobile social search across languages | |
KR102462412B1 (ko) | 멘토링 플랫폼 제공 시스템 및 그 방법 | |
Alterman et al. | A more reflective form of joint problem solving | |
Zhu | Searchable talk as discourse practice on the internet: The case of “# bindersfullofwomen” | |
US20180357209A1 (en) | Methods and systems relating to context-specific writing frameworks | |
Maphosa | Using MyLSU app to enhance student engagement and promote a smart town at a rural university in Zimbabwe | |
KR102509469B1 (ko) | 멘토링 플랫폼 제공 시스템 및 그 방법 | |
Salman et al. | Integrating scientific publication into an applied gaming ecosystem | |
Gu | Implementing a mobile app as a personal learning environment for workplace learners | |
McNulty | The Ulwazi programme: A case study in community-focused indigenous knowledge management | |
Reyes | Participatory design through social media: the translation of a future workshop | |
McDowell | Teaching “between”: Reflections on learning inter-organizational collaboration | |
NWE | Entrepreneurship and Technology Leapfrogging in Least Developed Countries: A Study of Myanmar Tech Startups | |
Tekwa | Real-time machine-translated instant messaging: a brief overview with implications for translator training | |
Ngwenya et al. | An ontology-based framework for mobile learning in rural secondary schools | |
Popescu et al. | Using CollAnnotator to analyze a community of inquiry supported by educational blogs-preliminary results | |
AU2015249164B2 (en) | Language learning exchange | |
de la Torre et al. | Digital Technologies in English Studies and Research | |
O’Driscoll | Smart Classroom Technology | |
Kumari | Emerging Variants of Library and Information Services | |
Manske et al. | Go-Lab Releases of the Learning Analytics, Scaffolding Services, and Add-on Services-Final | |
Myers et al. | Three teachers’ treasured technologies | |
Rose | Using “Interval Check-ins” to Implement “Self-Monitoring” Skills During Peer Conversations for a High School Student with Autism Spectrum Disorder in a High School Resource Room |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |