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 (11)

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

Similar to Codeveloper 개발기 (20)

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

Codeveloper 개발기