SlideShare a Scribd company logo
Codeveloper
실시간 협업형 웹 기반 IDE 플랫폼
개발자 이재민
https://github.com/j911
Codeveloper?
코드벨로퍼는 실시간으로 여러 개발자가 함께 코드를 함께 수정
하고 디버깅 할 수 있는 웹기반 IDE 플랫폼 입니다.
목표
Cookie & Session 최소화
Ecma Script 6 문법
보안 이슈 최적화
누구나 이해할 수 있는 코드
그냥 개발하면 재미 없으니까
일반적인 IDE
IDE 구조
파일 목록
편집기
콘솔
DOM
{ explorer }
{ editor }
{ console }
Document Object Model
DOM Document Object Model
IDE == 통합 개발 환경
코드 작성 뿐만이 아니라 코드 실행도 가능해야한다
아이디어 1
로컬 쉘에 접근해 코드를 실행한다.
아이디어 1
로컬 쉘에 접근해 코드를 실행한다.
$ rm -rf /
Drop database
…
아이디어 1
로컬 쉘에 접근해 코드를 실행한다.
$ rm -rf /
Drop database
…너무
많은
보안
이슈
아이디어 2
가상 환경을 구현해 명령을 실행신다
아이디어 2
Node C(GCC) JAVA
아이디어 2
Node C(GCC) JAVA
보안이슈
해결!
구조
Codeveloper
editor Terminal-API
Terminal-API
https://github.com/J911/Terminal-API
공동개발자 등록
기능
공동 개발자
공동 개발자의 파일
내가 작성한 파일
새파일 만들기
Flow
!
Flow
!
codeveloper
coding..
Flow
!
codeveloper
Terminal-API
compile
Flow
!
codeveloper
Terminal-API
C1 C2 C3 C4
run!
유저마다 가상 컨테이너 생성
Flow
!
codeveloper
Terminal-API
C1 C2 C3 C4
Feedback!
Flow
!
codeveloper
Terminal-API
C1 C2 C3 C4
!
!
전체 기능
export const UPDATE_USER = 'UPDATE_USER'
export const UPDATE_FILE = 'UPDATE_FILE'
export const UPDATE_CURRENT_IDX = 'UPDATE_CURRENT_IDX'
export const UPDATE_FILE_LIST = 'UPDATE_FILE_LIST'
export const UPDATE_MASTER_FILE_LIST = 'UPDATE_MASTER_FILE_LIST'
export const UPDATE_CODE = 'UPDATE_CODE'
export const UPDATE_CODE_STATE = 'UPDATE_CODE_STATE'
export const SHOW_DIMMER = 'SHOW_DIMMER'
export const HIDE_DIMMER = 'HIDE_DIMMER'
export const SHOW_MESSAGE_BOX = 'SHOW_MESSAGE_BOX'
export const HIDE_MESSAGE_BOX = 'HIDE_MESSAGE_BOX'
export const SHOW_REGIST_BOX = 'SHOW_REGIST_BOX'
export const HIDE_REGIST_BOX = 'HIDE_REGIST_BOX'
export const SHOW_PROFILE_BOX = 'SHOW_PROFILE_BOX'
export const HIDE_PROFILE_BOX = 'HIDE_PROFILE_BOX'
export const SHOW_LOADING = "SHOW_LOADING"
export const HIDE_LOADING = "HIDE_LOADING"
export const UPDATE_CONTRIBUTORS = 'UPDATE_CONTRIBUTORS'
export const ADD_CONTRIBUTOR = 'ADD_CONTRIBUTOR'
export const SWITCH_CONSOLE_MENU = 'SWITCH_CONSOLE_MENU'
export const UPDATE_CONSOLE_LOG = 'UPDATE_CONSOLE_LOG'
export const GET_USER = 'GET_USER'
export const GET_FILE = 'GET_FILE'
export const GET_MASTER_FILE = 'GET_MASTER_FILE'
export const NEW_FILE = 'NEW_FILE'
export const GET_FILE_LIST = 'GET_FILE_LIST'
export const GET_MASTER_FILE_LIST = 'GET_MASTER_FILE_LIST'
export const UPDATE_FILE = 'UPDATE_FILE'
export const GET_HOSTS = 'GET_HOSTS'
export const GET_CONTRIBUTORS = 'GET_CONTRIBUTORS'
export const ADD_CONTRIBUTOR = 'ADD_CONTRIBUTOR'
mutation-types.js
action-types.js
export const JOIN_IDE = "JOIN:IDE"
export const UPDATE_CODE = "UPDATE:CODE"
export const CHAT_MESSAGE = "CHAT:MESSAGE"
export const CONTAINER_INIT = "CONTAINER:INIT"
export const CONTAINER_CP = "CONTAINER:CP"
export const CONTAINER_COMMAND = "CONTAINER:COMMAND"
socket-types.js
Frontend 구조
codeveloper-frontend
.
├── src
│   ├── components. // 공통 컴포넌트
│   ├── config // 설정
│   ├── locale // 언어 설정
│   ├── socket // 소켓통신 모듈
│   ├── spa
│      ├── Home.vue // 메인 페이지
│      ├── Login.vue // 로그인 페이지
│      └── IDE.vue // IDE 페이지
│   ├── style // 컴포넌트 스타일
│   ├── App.vue
│   └── main.js
└── index.html
Backend 디렉토리 구조
codeveloper-backend
.
├── src
│   ├── auth // 공통 컴포넌트
│   ├── cookie-session
│   ├── docker // 도커 관련 모듈
│   ├── mysql // 데이터베이스 접근 모듈
│   ├── routes // 라우팅 모듈
│   └── socket //소켓 통신 모듈
└── index.js
Stack 기술 스택
Backend
Frontend
Express JsNode Js MariaDB Socket.ioUbuntu Server
Vue Js Webpack3 AxiosVuex FontAwesome CodeMirror
Docker
OpenSource Project
https://github.com/J911/codeveloper
GitHub
OpenSource Project
https://github.com/J911/codeveloper
DEMO
https://youtu.be/lpQRb---oGI
감사합니다.

More Related Content

What's hot

[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
Amy Kim
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
iFunFactory Inc.
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
Junyoung Lee
 
생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)
SeungYong Baek
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android
종국 임
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android
Sangkyoon Nam
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
iFunFactory Inc.
 
git 간단한 사용방법
git 간단한 사용방법git 간단한 사용방법
git 간단한 사용방법
Oh Dongju
 
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
Booseol Shin
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
iFunFactory Inc.
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
KwangSeob Jeong
 

What's hot (11)

[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
 
git 간단한 사용방법
git 간단한 사용방법git 간단한 사용방법
git 간단한 사용방법
 
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 

Similar to Codeveloper 개발기

코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
Ji-Woong Choi
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Hyunghun Cho
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Chanho Song
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
Jaehyeuk Oh
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
Giseok Lee
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
SangIn Choung
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
Hoyoung Jung
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
Sang Don Kim
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동
Sangon Lee
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
Lee MyoungKyu
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
Keesun Baik
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
흥배 최
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
hanbeom Park
 
Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3Hyunghun Cho
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
Sungkyun Kim
 

Similar to Codeveloper 개발기 (20)

코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 

Codeveloper 개발기