차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha2021.03월 버전.
경력 및 세부 사항이 추가되는 대로 새로운 파일로 업로드할 예정입니다.
이력서 및 경력기술서를 합쳐서 하나의 파일로 완성했습니다 :)
궁금하신 사항은 개인 이메일 (cjm9236@gmail.com) 로 연락부탁드리겠습니다.
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi강력한 시각화와 몰입도 높은 가상세계 표현을 위해, 게임엔진은 측량기반의 콘텐츠를 필요로 하고 공간정보 3D 플랫폼은 강력한 프리미엄급 클라이언트를 필요로 하는데, Cesium for Unreal은 이런 수요를 만족하는 솔루션입니다. 이 발표자료는 공간정보 3D 콘텐츠가 어떻게 게임엔진 안으로 들어가서 국가 또는 지구 범위로 확장성을 발휘하는지, 그 기능구현을 진입단계 수준으로 소개하고 있습니다.
Introduction to react_jsMicroPyramid .React is a JavaScript library for building user interfaces. It was created by Facebook and is best for building dynamic websites like chat applications. React uses a virtual DOM for efficiently updating the view after data changes. Components are the building blocks of React and can contain state and props. The document provides an example of a simple component class and demonstrates how to add state and props. It also includes links to example code and MicroPyramid's social media profiles.
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea서비스 런칭을 위해 라이온하트와 카카오게임즈가 어떻게 최적 성능의 인스턴스를 선택하고, Windows 운영 체제를 최적화하며, 왜 Amazon Aurora를 기본 데이터베이스로 채택하였는지를 설명합니다. 또한, 출시부터 운영까지의 과정에서 MMORPG가 어떻게 AWS 상에서 설계되고, 게임 서버 성능을 극대할 수 있었는지에 대해 전달해드립니다.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
Social Tutorial Platform: Webbles Wonkyung LyuPresentation of Social Tutorial Platform "Webbles" for Software Maestro First Stage Evaluation by TEAM BULLBACK (https://webbles.net)
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi강력한 시각화와 몰입도 높은 가상세계 표현을 위해, 게임엔진은 측량기반의 콘텐츠를 필요로 하고 공간정보 3D 플랫폼은 강력한 프리미엄급 클라이언트를 필요로 하는데, Cesium for Unreal은 이런 수요를 만족하는 솔루션입니다. 이 발표자료는 공간정보 3D 콘텐츠가 어떻게 게임엔진 안으로 들어가서 국가 또는 지구 범위로 확장성을 발휘하는지, 그 기능구현을 진입단계 수준으로 소개하고 있습니다.
Introduction to react_jsMicroPyramid .React is a JavaScript library for building user interfaces. It was created by Facebook and is best for building dynamic websites like chat applications. React uses a virtual DOM for efficiently updating the view after data changes. Components are the building blocks of React and can contain state and props. The document provides an example of a simple component class and demonstrates how to add state and props. It also includes links to example code and MicroPyramid's social media profiles.
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea서비스 런칭을 위해 라이온하트와 카카오게임즈가 어떻게 최적 성능의 인스턴스를 선택하고, Windows 운영 체제를 최적화하며, 왜 Amazon Aurora를 기본 데이터베이스로 채택하였는지를 설명합니다. 또한, 출시부터 운영까지의 과정에서 MMORPG가 어떻게 AWS 상에서 설계되고, 게임 서버 성능을 극대할 수 있었는지에 대해 전달해드립니다.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
Social Tutorial Platform: Webbles Wonkyung LyuPresentation of Social Tutorial Platform "Webbles" for Software Maestro First Stage Evaluation by TEAM BULLBACK (https://webbles.net)
네이티브 웹앱 기술 동향 및 전망Wonsuk Lee한국 웹20주년 국제 콘퍼런스에서 발표한 자료로 네이트브 플랫폼과 격차를 줄이기 위해 Web Platform이 어떻게 발전해 가고 있는지에 대해 설명한다. 또한 향후 HTML5/Web Platform에 대한 전망도 소개한다.
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae KimCloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼Cheol Kang빅데이터, 데이터마이닝, 공공데이터, 오픈데이터 - 그 어느때보다 데이터 분석 및 활용이 중요해진 이 시기에 웹 상의 수많은 공개된 자료를 직접 수집할 수 있는 웹 스크래핑/크롤링 기술은 데이터 수집 및 활용 능력에 큰 도움이 됩니다.
이 강의에서는 크롤링 프레임웍을 사용하지 않고 HTTP, DOM, concurrency를 담당하는 기본적인 라이브러리만을 사용해 직접 웹 스크래퍼를 처음부터(from scratch) 작성해 봄으로써, 언제든 자유도 높은 동시성 크롤러를 직접 구현할 수 있도록 작동 원리를 이해할 수 있도록 합니다.
시연에서 작성된 전체 소스코드는 아래 링크에서 보실 수 있습니다.
https://gist.github.com/cornchz/0ec0c3f5ca69bac2b625
Metaworks3 Framework workbook 2015uEngine SolutionsMetaworks is Metadata Oriented Application Framework
which is Inspired from the Adaptive Object Models and OMG Reflection, MDA.
The main approach is
Application Component Generation on the fly from metadata
Now Metaworks version 3 Is A POJO framework that
encourages the Domain-Driven Design and
Especially for developing model-driven applications (UML, BPMN, etc)
2. 1. 회사 프로젝트 ( 벙커서울 2014.07~2015.08 근무 )
1-1. 의류 쇼핑몰 앱 개발
- 프로젝트 구조
- 상세 설명
1-2. 의류 쇼핑몰 백엔드 구축
2. 개인 프로젝트
2-1. 웹 테트리스
- 프로젝트 구조
- 상세 설명
- 블록 회전 기능 구현 과정
2-2. 카페 공유 웹 사이트
- 프로젝트 구조
- 구현 화면
- 사이트 최적화 경험
포트폴리오 목차
3. 모바일 앱 동작 화면
1-1. 의류 쇼핑몰 앱 개발
프로젝트명
신진 의류 디자이너의 상품을 홍보,
디자이너의 제품을 판매하기 위한 플랫폼 개발
결과물 형태 모바일 앱
수행기간 2015.01 ~ 2015.04
주요 언어 HTML5, CSS3, JavaScript (ECMAScript 5)
프레임워크 AngularJS 1.3, Ionic Framework 1.0.0 beta
라이브러리 angular-ui-router
팀 구성 기획 1명 / 디자인 1명 / 개발 1명
개발 참여율 100%
결과물
- 소스코드 : GitHub
- 시연영상 : YouTube
런칭 여부 X
4. 1-1. 의류 쇼핑몰 앱 개발 - 프로젝트 구조
index.html
template
js
css
www
뷰(.html), 뷰의 컨트롤러(.js) 관리
services
app.js 앱의 라우팅 담당 ($stateProvider)
서버와 http 통신하는
factory 모듈
File
Directory
shop.js
brand.js
cart.js
....
5. ● 결제 모듈 연동 제외
● 디자이너의 UI 가이드를 기반으로 모바일 화면 퍼블리싱
● $http 서비스를 호출하는 코드는 여러개의 팩토리 모듈로 분리한 후
서버와 통신이 필요한 컨트롤러에서 모듈을 주입, 중복되는 코드 감
소시킴
● 이벤트 처리는 ng-click, ng-submit, ng-change 등 지시자 사용
● angular-ui-router의 $stateProvider를 사용하여
클라이언트 측 라우팅 구현
1-1. 의류 쇼핑몰 앱 개발 - 상세설명
app.js
클라이언트 라우팅 코드 일부
6. 프로젝트명 “의류 쇼핑몰 앱 프로젝트”의 백엔드 구축
수행기간 2015.01 ~ 2015.04
주요 언어 Python 3
프레임워크 Django 1.7
데이터베이스 PostgreSQL
서버 호스팅 AWS EC2 ( Ubuntu OS )
라이브러리 Django-REST-framework, django-rest-auth
팀 구성 기획 1명 / 디자인 1명 / 개발 1명
개발 참여율 100%
결과물 - 소스코드 : GitHub
1-2. 의류 쇼핑몰 백엔드 구축
상세 설명
● 상품, 디자이너, 디자이너 브랜드 등 서비스에 필요한 데이
터를 전송하는 REST API 작성
● PIP 패키지 관리자를 사용하여 개발 의존성 관리
● 서버 호스팅은 AWS EC2를 이용했으며, Ubuntu OS에서 데
이터베이스 설치, 프로젝트 환경 구축
● 서버 개발 중 막히는 부분은 Stack Overflow에 직접 질문하
면서 문제 해결 StackOverflow
7. 2-1. 개인 프로젝트 - 웹 테트리스
프로젝트명 1인용 웹 테트리스
결과물 형태 정적 웹 페이지
수행기간 2017.02 , 2주
주요 언어 HTML5, CSS3, JavaScript (ECMAScript 5)
그래픽 DOM API
조작키
- 블록 이동 : 상, 하, 좌, 우 방향키
- 블록 드랍 : 스페이스
결과물
- 소스코드 : GitHub
- 사이트 링크 : Play
테트리스 동작 화면
8. 2-1. 웹 테트리스 - 프로젝트 구조
index.html
script.js
setting.js
Tetris
File
Directory
style.css
테트리스 게임의 메인 로직
게임 설정에 관한 객체 저장
행/열의 개수, 블록의 종류 등
9. 2-1. 웹 테트리스 - 상세 설명
● 자바스크립트 이해를 높이기 위해 라이브러리를 사용하지 않음
● 그래픽 구현은 Canvas를 사용하지 않고 DOM API로 개발
○ 10*20 크기의 매트릭스의 각 셀 요소에 ‘행-열'정보 담은 id 부여
○ 셀 요소에 직접 접근하여 background-color를 제어하는 방식
● 게임의 키 조작은 onkeydown 이벤트 리스너 사용
● 메인 로직은 즉시실행함수(IIFE) 패턴으로 전역 스코프 보호
● 게임 설정이 있는 객체는 setting.js로 분리
● 블록에 대한 데이터는 배열을 중첩해서 저장
블록 데이터를 저장
한 소스코드 일부
10. 블록 회전 구현 과정
- 블록을 시계 방향으로 회전할 때, 쌓여있는 블록과 충돌하거나 매트릭스의 범위를 벗어나는 경우 발생
블록 회전
충돌
매트릭스의 경계
블록 회전
매트릭스
범위 이탈
2-1. 웹 테트리스 - 블록 회전 구현
11. 구현 과정
(1) 블락을 회전했을 때 충돌 혹은 범위 이탈이 일어날 경우, 문제가 되는 셀(블록을 이루는 사각형) 개수 확인
- nextRotBlock : 회전될 블락의 셀의 좌표값 2차원 배열
ex) nextRotBlock // [ [3, 5], [4, 5], [4, 6], [4, 7] ]
- self.matrix : 10X20개의 셀 정보가 담긴 2차원 배열
ex) self.matrix[0][0] == 1 // 0행 0열의 셀은 이미 채워짐
- overCells : 충돌되는 셀이 담길 배열
7열4행
2-1. 웹 테트리스 - 블록 회전 구현
12. (2) 충돌되는 셀의 길이를 기준으로 for 루프 실행하면서 이동 가능한지 검사, 이동
● 이동 가능 여부를 검사하는 방향은 “좌, 우, 상, 하”의 순서로 진행
● 충돌되는 셀의 길이가 2이상이라도 1칸 이동해도 되는 경우가 있기 때문에 무조건 cnt는 1부터 시작
2-1. 웹 테트리스 - 블록 회전 구현
overCells.length == 2 1칸 이동하면 회전 가능
13. (3) 화면에서 기존의 블록을 삭제하고, 회전된 블록을 화면에 렌더링
- 회전이 불가능하면 return으로 함수 종료
2-1. 웹 테트리스 - 블록 회전 구현
14. 2-2. 개인 프로젝트 - 카페 공유 사이트
프로젝트명 작업하기 좋은 카페를 공유하는 사이트
결과물 형태 웹 사이트
수행기간 2016.08 ~
주요 언어 HTML5/CSS3, JavaScript (ECMAScript 5), Python 3
프레임워크 Django 1.9
라이브러리 jQuery 3.1, Bootstrap, font-awesome, Bower
결과물
- 소스코드 : GitHub
- 사이트 링크 : Site Link 사이트 메인 화면
15. 2-2. 카페 공유 사이트 - 프로젝트 구조
main
authapp
cafealone
데이터베이스 연결 정보,
Timezone 등의 프로젝트 설정 파일
로그인, 회원가입 페이지 템플릿 관리
DB 테이블 User 정의models.py
root directory settings.py
templates
...
templates
static
카페 목록, 카페 상세 화면,
카페 등록 및 수정 템플릿
css, js, img 디렉토리 관리
정적 리소스가 있는 디렉토리
17. (2) 추천 페이지 - 이미지 업로드 / 삭제
mouse over click
image removed
2-2. 카페 공유 사이트 - 구현화면
18. (3) 추천 페이지 - 카페 위치 지정
⓵
⓶
위치 지정 방법 2가지
⓵ 문자열 주소를 입력하고 ‘검색’ 버튼 클릭
⓶ 지도 상의 ‘마킹'를 Drag & Drop 하거나,
빈 공간을 클릭하여 ‘마킹’을 이동하면
‘마킹'의 위치가 문자열 주소로 변환됨
2-2. 카페 공유 사이트 - 구현화면
19. (4) 카페 상세 Modal
⓵
⓶
⓵ 등록한 카페를 지우는 버튼
⓶ 카페 정보 수정하는 버튼
카페를 수정 및 삭제하는 기능은
로그인한 사용자와 작성자가 같을 때만 활성화
⓵ ⓶
2-2. 카페 공유 사이트 - 구현화면
20. 페이지 로딩 속도 개선 사례
- 기존에는 Django의 빌트인 서버를 통해 HTML, CSS, JavaScript, 이미지 파일을 서빙
- 페이지 로딩속도 개선을 위해 백엔드 구성 요소에 Nginx, Gunicorn을 추가
- 서로 다르게 구성한 두 개의 서버를 포트를 다르게 하여 동시에 실행시키고, 로딩 속도를 비교 (Pingdom.com)
Nginx와 Gunicorn으로 서버를 구성했을 때
페이지 로딩 속도가 2초 가량 빨라진 것을 확
인
Django + Nginx + Gunicorn
Django Built-in Server
2-2. 카페 공유 사이트 - 사이트 최적화 경험