SlideShare a Scribd company logo
1 of 62
Download to read offline
자바스크립트 라이브러리 
개발/운영 경험기 
전용우 / NHN NEXT
CONTENTS 
1. 사용자 
1-1. 기능이 부족해요 VS 너무 많아요 
1-2. 업그레이드 
2. 개발 
2-1. 유연함은 중요하다 
2-2. 라이브러리간 의존 관계
https://www.flickr.com/photos/pictureperfectpose/76138988
1. 사용자(User)
1-1. 기능이 부족해요 
VS 
너무 많아요
다 같은 사용자는 아니더라 
https://www.flickr.com/photos/zsrlibrary/14254359634
https://www.flickr.com/photos/rwp-roger/6772861500 
압축도구를 바꿔 볼까? 
어떤 도구를 써도 5%이상 차이 안남 
https://www.flickr.com/photos/maitreyoda/9771070802
라이브러리의 사용률? 
8 
https://www.flickr.com/photos/ores2k/394359583
과연… 얼마나 사용할까? 
gzip 크기(%) 
100 
75 
50 
25 
0 
core A B C D 
비교적 많이 사용하는 서비스 
40%
골라서 쓰자 
https://www.flickr.com/photos/igal/7901479448
선택 내려받기
Core의 메서드 100여개 
! 
서비스 코드에서 찾기란 쉽지 않다 
https://www.flickr.com/photos/ronbrinkmann/6542592269/
function 
foo(sId){ 
$Element(sId).addClass("on"); 
} 
function 
bar(){ 
$A($$("li")).forEach(function(v){ 
$Element(v).toggleClass("selected"); 
}); 
} 
Rhino 
Engine 
RegExp 
service 
code 
$Element 
addClass 
$A 
$$ 
… 
※ Esprima가 보다 안정적임.
$Element 
addClass 
$A 
$$ 
… 
{ 
meta_2.1.0.js 
"jindo.$A.prototype.forEach": 
{ 
"key": 
"ae10", 
"dependency": 
["av1"] 
} 
} 
+ 
core_2.1.0_custom.js 
jindo.$Element 
= 
function(){....}; 
jindo.$Element.prototype.addClass 
= 
function(){...}; 
jindo.$Element.prototype.toggleClass 
= 
function(){...}; 
jindo.$$ 
= 
function(){}; 
jindo.$A 
= 
function(){}; 
jindo.$A.prototype.forEach=function(){}
15 
30~40%
이슈는 있다. 
! 
1. 각 페이지 별로 core가 다를 수 있다. 
2. 추가된 메서드가 있을 때 다시 배포해야 한다. 
사용자는 개선됐지만, 
! 
개발자는 여전히 새로운 기능을 
추가하는건 비용이 커서 쉽지 않음.
1-2. 업그레이드(Upgrade)
자. 이제 만들었어요. 
2.X.X로 업그레이드 하시면 되요. 
업그레이드하기엔 부담되네요. 
https://www.flickr.com/photos/dharder9475/14322980596
https://www.flickr.com/photos/bswise/4424374169 
서비스는 안정성
20 
업그레이드가 필요하다면, 
최대한 쉽게 하자.
21 
https://www.flickr.com/photos/djou/362370161 
1. 버저닝(Versioning)
기존의 버저닝 규칙 
X.Y.Z 
! 
1. 특별한 규칙을 가지고 있지 않음. 
2. 개발자가 많이 변경된 것 같다고 생각하면 좀 많은 버전을 올림.
Semantic Versioning 
X.Y.Z 
! 
1. 기존 버전과 호환되지 않게 API가 바뀌면 X(major)을 올린다. 
2. 기존 버전과 호환되지만 API 추가된 경우 Y(minor)을 올린다. 
3. API 변경 없어 버그만 수정된 경우 Z(patch)을 올린다. 
[http://semver.org/] 
아쉬운 점 
1. 크기를 알기 힘들다. (10개 수정 == 1개 수정) 
2. 버저닝의 규칙만으로 결과를 확인하기 어렵다.
여전히 업그레이드는 걱정 
버전간 차이가 크면 릴리즈 노트는 큰 도움이 안됨 
https://www.flickr.com/photos/samstanton/3541463682
가보지 않은 길은 막막하다 
Q&A 
https://www.flickr.com/photos/samstanton/3541463682
26 
2. 업데이터(Updater)
function 
foo(sId){ 
$Element(sId).addClass("on"); 
} 
function 
bar(){ 
$A($$("li")).forEach(function(v){ 
$Element(v).toggleClass("selected"); 
}); 
} 
Rhino 
Engine 
RegExp 
service 
code 
$Element 
addClass 
$A 
$$ 
…
$Element 
addClass 
$A 
$$ 
… 
+ 
changelog_2.1.0.js 
[{ 
"method": 
[jindo.$A.prototype.forEach"], 
"coverage": 
[ 
"mobile","desktop" 
], 
"type": 
"1","level": 
"2", 
"desc": 
"forEach 
첫번째 
인자가 
역순으로 
나옴" 
}] 
result 
| 파일명 | 줄 번호 | 진도 메서드 | 타입 | 레벨 | 버전 | 변경 내용 | 
| service.js | 4 | $A#forEach | 버그 | 패치 | 2.0.1 | forEach 첫번째 인자가 역순으로 나옴|
얼마나 업그레이드 할까? 
Q&A 
100% 
75% 
50% 
25% 
0%
업그레이드 비율이 높아지진 않음 
! 
1. 기존의 업그레이드할 때 보다 안정적으로 업그레이드를 진행. 
2. 업그레이드에 대한 질문은 많이 없어짐.
2. 개발(Development)
2-1. 유연함은 중요하다
완성도는 SnapShoot과 같다. 
나도 성장하고 주위도 성장한다 
환경은 변한다 
미래는 예측할 수 없다 
https://www.flickr.com/photos/adulau/12533795583
모바일용 컴포넌트 만들 당시 
Component Mobile Component
환경도 변한다. 
Flicking 
slide 
cover 
cube 
! 
1. 많은 요구 사항으로 기능이 늘어남. 
2. 유지보수가 힘듬 
Flicking 
SlideFlicking CoverFlicking CubeFlicking
변화에 기민하게 대응하는게 중요 
테스트는 좋은 안전 장치다. 
https://www.flickr.com/photos/jo_mur/4478000841
테스트 케이스 상황 
단위 테스트 케이스 테스트 케이스 
Core 500여개 - 
Component 개당 20~30 개당 20~30 
Mobile 
Component 개당 20~30 개당 20~30
Core - 테스트
Core - 테스트 
Cloud 환경은 제외 
- 빠르게 확인 안됨 
JSTestDriver 
- 자체 도구에 맞게 Adapter 구현이 안됨 
필요한 기능만 개발 
- 그냥 쉽고 빠르게 응답받는 걸 만들자
Core - 테스트 
file write 
Ajax polling 
result 
$Ajax 
$Element 
$A 
$H
Core - 테스트 
Testem [https://github.com/airportyh/testem] 
Karma [http://karma-runner.github.io/0.12/index.html] 
Adapter의 방식이 Event로 되어 있어 타 단위 테스트 라이브러리와 연동이 잘됨
Component (Mobile) - 테스트 
단위 테스트 테스트 케이스 
! 
1. 단위 테스트는 크게 문제가 되지 않는다 
2. 사람이 직접 테스트해야 하는 테스트 케이스 경우 비용이 크다
밀도있게 하자 
어떻게 하면 줄일 수 있을까? 
1. 대부분의 문제는 수치화 안되는 상황 
2. 실제 사용자 이벤트가 필요한 경우 
3. 퀄리티와 직결되는 이슈 
https://www.flickr.com/photos/ores2k/394359583
기능별로 구분할까? 
테스트 케이스 테스트 케이스 테스트 케이스 
A컴포넌트 B컴포넌트 C컴포넌트 
A기능 B기능 C기능 D기능
테스트 리팩토링 
테스트 케이스 
겹치는 테스트 케이스 
- 비슷한 동작을 하는 경우 하나로 
40% 
비슷한 기기의 통합
46 
운영하는데 유연성은 중요 
테스트 케이스가 좋은 장치 
단위 테스트 케이스 - 도구를 활용 
테스트 케이스 - 밀도가 중요
2-2. 라이브러리간 의존관계
JindoJS의 구조 
Core 
Component 
Mobile 
Component 
Component Core 
Core 버전이 변경되면? 
서비스와 다르게 컴포넌트는 
서비스에서 사용하는 
Core의 버전을 모름
문제들 
! 
1. 새로운 Core의 기능을 사용할 수 없음. 
2. 이미 Core에서 수정된 이슈를 서비스에서 어떤 Core의 버전을 사용하는지 알 수 없어 
별도로 가지고 있어야 함.
테스트를 잘하자 
기하급수로 늘어난다
Core 버전 * 컴포넌트 버전 
Core Component 
1.4.0 
1.4.1 
1.5.0 
… 
2.0.1 
2.0.2 
1.2.0 
1.2.1 
1.3.0 
… 
1.4.1 
1.5.1 
n k
고민된다 #1 
1. Core의 의존도가 높으면 전체적으로 개선되나 
사용자의 Core가 제각각이다. 
-> 의존도를 낮추자 
2. Core의 의존도를 낮추면 Core비슷한 걸 
만들게 된다. 
-> Core을 사용하자.
고민된다 #2 
1. 네이티브의 발전은 지속적이고 빠르다. 
-> 모두 다하기에는 벅차다. 
2. 지금 방식에 만족하자. 
-> 근데 예전 방식이다.
54 
1. 최소한의 의존관계 
2. 손쉽게 발전할 수 있을까?
Core기능 
1. 좀 더 사용자가 쉽게 개발 
2. 크로스 브라우징
분리하는게 좋겠다 
Core 
Core 
polyfill
분리하는게 좋겠다 
jindo.$Fn.prototype.bind 
= 
function() 
{ 
if(Function.prototype.bind){ 
//bind가 
있는 
경우 
}else{ 
//bind가 
없는 
경우 
} 
}; 
if 
(!Function.prototype.bind) 
{ 
Function.prototype.bind 
= 
function 
(target) 
{ 
// 
bind가 
없는 
경우 
}; 
} 
! 
jindo.$Fn.prototype.bind 
= 
function() 
{ 
// 
bind가 
있는 
경우 
};
분리하는게 좋겠다 
Core 
Component 
Mobile 
Component 
Component Core 
polyfill 
Core 
Component Mobile 
Component 
Component Core
진행중 
! 
1. polyfill의 지원은 잘되어 있는 편이라 보다 쉽게 간접적으로 외부지원을 받는다. 
2. 생각보다 많은 작업이라 한번에 진행하긴 힘들고 천천히 진행중이였다. 
가장 많이 사용하는 core 최신 Component 
최신 core 전 버전 Component 
최신 core 최신 Component
60 
http://dev.naver.com/projects/jindo
Q&A
THANK YOU

More Related Content

What's hot

Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngineSol Kim
 
Java Build Tool
Java Build ToolJava Build Tool
Java Build Tool용근 권
 
Angular 기본 개념 잡기
Angular 기본 개념 잡기Angular 기본 개념 잡기
Angular 기본 개념 잡기장현 한
 
[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효NAVER D2
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅Yoonsung Jung
 
Electron 개발하기
Electron 개발하기Electron 개발하기
Electron 개발하기성일 한
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자jung kyunghwan
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 YoungSu Son
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈용근 권
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejsNAVER D2
 
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN정호 전
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅JinKwon Lee
 
PHP Slim Framework with Angular
PHP Slim Framework with AngularPHP Slim Framework with Angular
PHP Slim Framework with AngularJT Jintae Jung
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 

What's hot (20)

Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngine
 
Java Build Tool
Java Build ToolJava Build Tool
Java Build Tool
 
Maven
MavenMaven
Maven
 
Angular 기본 개념 잡기
Angular 기본 개념 잡기Angular 기본 개념 잡기
Angular 기본 개념 잡기
 
[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
Electron 개발하기
Electron 개발하기Electron 개발하기
Electron 개발하기
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
 
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅
 
PHP Slim Framework with Angular
PHP Slim Framework with AngularPHP Slim Framework with Angular
PHP Slim Framework with Angular
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 

Viewers also liked

[중소기업청]쓰리디에스랩 기업 홍보문서
[중소기업청]쓰리디에스랩 기업 홍보문서[중소기업청]쓰리디에스랩 기업 홍보문서
[중소기업청]쓰리디에스랩 기업 홍보문서startupkorea
 
사업소개서 FLIN
사업소개서 FLIN사업소개서 FLIN
사업소개서 FLIN영웅 하
 
Comapany info inpion­__full version 120600
Comapany info inpion­__full version 120600Comapany info inpion­__full version 120600
Comapany info inpion­__full version 120600Kilwoong Lee
 
모바일 디버깅
모바일 디버깅모바일 디버깅
모바일 디버깅yongwoo Jeon
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overviewyongwoo Jeon
 
캐시슬라이드1
캐시슬라이드1캐시슬라이드1
캐시슬라이드1ounjeong
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brickyongwoo Jeon
 
SNOW.or.kr at CC Asia Conference 2010
SNOW.or.kr at CC Asia Conference 2010SNOW.or.kr at CC Asia Conference 2010
SNOW.or.kr at CC Asia Conference 2010Ji Lee
 
안경할머니곱창 사업소개서[옛체]
안경할머니곱창 사업소개서[옛체]안경할머니곱창 사업소개서[옛체]
안경할머니곱창 사업소개서[옛체]jonghwahong
 
처음서비스 사업소개서
처음서비스 사업소개서처음서비스 사업소개서
처음서비스 사업소개서lemonmail
 
아프리카TV 라이브팬팅 소개서
아프리카TV 라이브팬팅 소개서아프리카TV 라이브팬팅 소개서
아프리카TV 라이브팬팅 소개서대영 류
 
2013 천문연구원 여름호
2013 천문연구원 여름호2013 천문연구원 여름호
2013 천문연구원 여름호carpediemrds
 
KG이니시스 회사 소개서
KG이니시스 회사 소개서KG이니시스 회사 소개서
KG이니시스 회사 소개서Inicis
 
모바일컨버전스-Trusted IP Network(TIPN) 솔루션
모바일컨버전스-Trusted IP Network(TIPN) 솔루션모바일컨버전스-Trusted IP Network(TIPN) 솔루션
모바일컨버전스-Trusted IP Network(TIPN) 솔루션모바일 컨버전스
 
Media kit k_cubeventures_미디어용1610
Media kit k_cubeventures_미디어용1610Media kit k_cubeventures_미디어용1610
Media kit k_cubeventures_미디어용1610K Cube Ventures
 
[IMR2014]WEEK06
[IMR2014]WEEK06[IMR2014]WEEK06
[IMR2014]WEEK06JY LEE
 
H3 2011 반응형 웹디자인, 진짜 할 만 한가?
H3 2011 반응형 웹디자인, 진짜 할 만 한가?H3 2011 반응형 웹디자인, 진짜 할 만 한가?
H3 2011 반응형 웹디자인, 진짜 할 만 한가?KTH
 

Viewers also liked (20)

[중소기업청]쓰리디에스랩 기업 홍보문서
[중소기업청]쓰리디에스랩 기업 홍보문서[중소기업청]쓰리디에스랩 기업 홍보문서
[중소기업청]쓰리디에스랩 기업 홍보문서
 
A+ Asset Advisor
A+ Asset AdvisorA+ Asset Advisor
A+ Asset Advisor
 
사업소개서 FLIN
사업소개서 FLIN사업소개서 FLIN
사업소개서 FLIN
 
Comapany info inpion­__full version 120600
Comapany info inpion­__full version 120600Comapany info inpion­__full version 120600
Comapany info inpion­__full version 120600
 
Devfest
DevfestDevfest
Devfest
 
Web component
Web componentWeb component
Web component
 
모바일 디버깅
모바일 디버깅모바일 디버깅
모바일 디버깅
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
 
캐시슬라이드1
캐시슬라이드1캐시슬라이드1
캐시슬라이드1
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
 
SNOW.or.kr at CC Asia Conference 2010
SNOW.or.kr at CC Asia Conference 2010SNOW.or.kr at CC Asia Conference 2010
SNOW.or.kr at CC Asia Conference 2010
 
안경할머니곱창 사업소개서[옛체]
안경할머니곱창 사업소개서[옛체]안경할머니곱창 사업소개서[옛체]
안경할머니곱창 사업소개서[옛체]
 
처음서비스 사업소개서
처음서비스 사업소개서처음서비스 사업소개서
처음서비스 사업소개서
 
아프리카TV 라이브팬팅 소개서
아프리카TV 라이브팬팅 소개서아프리카TV 라이브팬팅 소개서
아프리카TV 라이브팬팅 소개서
 
2013 천문연구원 여름호
2013 천문연구원 여름호2013 천문연구원 여름호
2013 천문연구원 여름호
 
KG이니시스 회사 소개서
KG이니시스 회사 소개서KG이니시스 회사 소개서
KG이니시스 회사 소개서
 
모바일컨버전스-Trusted IP Network(TIPN) 솔루션
모바일컨버전스-Trusted IP Network(TIPN) 솔루션모바일컨버전스-Trusted IP Network(TIPN) 솔루션
모바일컨버전스-Trusted IP Network(TIPN) 솔루션
 
Media kit k_cubeventures_미디어용1610
Media kit k_cubeventures_미디어용1610Media kit k_cubeventures_미디어용1610
Media kit k_cubeventures_미디어용1610
 
[IMR2014]WEEK06
[IMR2014]WEEK06[IMR2014]WEEK06
[IMR2014]WEEK06
 
H3 2011 반응형 웹디자인, 진짜 할 만 한가?
H3 2011 반응형 웹디자인, 진짜 할 만 한가?H3 2011 반응형 웹디자인, 진짜 할 만 한가?
H3 2011 반응형 웹디자인, 진짜 할 만 한가?
 

Similar to deview2014

GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GDG Korea
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기우현 김
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기Dexter Jung
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기 철민 배
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월월간 IT 슬라이드
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Bansook Nam
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for AppspressoKTH, 케이티하이텔
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4Daniel Lim
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신Sungwoo Choo
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신NAVER D2
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기NAVER D2
 

Similar to deview2014 (20)

GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기
 

More from yongwoo Jeon

Html5 시대의 웹앱 프로그래밍 방식의 변화
Html5 시대의 웹앱 프로그래밍 방식의 변화Html5 시대의 웹앱 프로그래밍 방식의 변화
Html5 시대의 웹앱 프로그래밍 방식의 변화yongwoo Jeon
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지yongwoo Jeon
 
Client side storage in html5
Client side storage in html5Client side storage in html5
Client side storage in html5yongwoo Jeon
 

More from yongwoo Jeon (10)

Web notification
Web notificationWeb notification
Web notification
 
Html5 시대의 웹앱 프로그래밍 방식의 변화
Html5 시대의 웹앱 프로그래밍 방식의 변화Html5 시대의 웹앱 프로그래밍 방식의 변화
Html5 시대의 웹앱 프로그래밍 방식의 변화
 
asm.js
asm.jsasm.js
asm.js
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
 
Html5 use cases
Html5 use casesHtml5 use cases
Html5 use cases
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
Client side storage in html5
Client side storage in html5Client side storage in html5
Client side storage in html5
 
Scriptable cache
Scriptable cacheScriptable cache
Scriptable cache
 
Whats jindo
Whats jindoWhats jindo
Whats jindo
 

Recently uploaded

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 

Recently uploaded (8)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 

deview2014