SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
How to make WebRTC
App
2015.05.28
허영남
웹클라이언트개발자
그리고!! FullStackforPlayRTCDeveloper..
cryingnavi@gmail.com
http://facebook.com/cryingnavi
발표자 소개
누구를 위한 발표인가
• 신기술에 관심 있는 Web 개발자
• 웹브라우저를 통한 실시간 통신에 관심 있는 web 개
발자
Agenda
• WebRTC 개요
• WebRTC Main APIs
• DataChannel 사용하기 및 팁
• PlayRTC란 무엇인가?
• WebRTC 품질 분석하기
• Test 자동화
WebRTC is
STUN
• Session Traversal Utilities for NAT
TURN
• Traversal Using Relays around NAT
SDP
• 미디어에 대한 메타 데이터로 해상도, 코덱 등을 기
술
• peer 간의 미디어 데이터를 이해하는데 사용
• offer 와 answer 로 구분
Candidate
• 미디어를 수신할 수 있는 가능성을 가진 네트워크 경
로에 대한 후보군
Signaling
Main APIs
• getUserMedia
• Access to Camera, Microphone
• PeerConnection
• signal processing, Security, encode, decode,
NAT traversal, packet send/receive,
bandwidth estimation etc..
• DataChannel
• text message, binary data..
getUserMedia
var UserMedia = (function (){
var getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
return getUserMedia;
})();
UserMedia({video: true, audio: true},
function(stream){
}, function(e){
});
getUserMedia
UserMedia({video: true, audio: true},
function(stream){
video.src = URL.createObjectURL(stream);
video.play();
video.mute = true;
}, function(e){
});
PeerConnection
var PeerConnection = (function(){
var PeerConnection = window.PeerConnection ||
window.webkitPeerConnection00 ||
window.webkitRTCPeerConnection ||
window.mozRTCPeerConnection ||
window.RTCPeerConnection;
return PeerConnection;
})();
var pc = new PeerConnection({
iceServers: [
{"url": "stun:23.21.150.121" },
{"url": "stun:stun.l.google.com:19302"}
]}, {
optional: [
{ DtlsSrtpKeyAgreement: true },
{ RtpDataChannels: false }
]
});
PeerConnection
• Method
• addStream - Local Stream
• createOffer - Offer SDP
• setLocalDescription
• createAnswer - Answer SDP
• setRemoteDescription
• addIceCandidate
• Event
• onicecandidate - Candidate
• onaddstream - Remote Stream
Signal Server AnswerOfferHANDSHAKECONNECTION
Connect
Create Peer
Create
Offer Create Peer
Create
Answer
Set Offer
Set Answer
Candidate Candidate
Connect Connect
Candidate
new
Checking
Connected
new
Checking
Connected
Disconnect
ed
close close
Failed Failed
Completed Completed
1 1
2
3
4
5
6
Offer SDP
Websocket
Connect
Offer SDP
Answer SDP
Answer SDP
Candidate Candidate
Websocket
Connect
Connect
{
"header":{
"command":"connect",
"token":"TKS11431908983594"
},
"body":{
"channelId":"CHS11431908983591"
}
}
SignalOffer
{
"header":{
"command":"connect",
"token":"TKS11431916414390"
},
"body":{
"othersCount":"0",
"channelId":"CHS11431916414387",
"others":[]
}
}
SDP
Offer Signal Answer
{
"header":{
"command":“sdp",
"token":"TKS11432169940272"
},"
body":{
“type”: “offer”
“sdp":"{"sdp":"v=0rno=-
7623322749329858714 2 IN IP4 127.0.0.1...."
}
}
{
"header":{
"command":“sdp",
"token":"TKS11432169940272",
"sender":"TKS11432169945602"
},"
body":{
“type”: “answer”
“sdp":"{"sdp":"v=0rno=-
7623322749329858714 2 IN IP4 127.0.0.1...."
}
}
Offer
Answer
SDPpc.createOffer(function(sessionDesc) {
pc.setLocalDescription(sessionDesc);
ws.send(JSON.stringify({
"header":{
"command":“sdp", "token":"TKS11432169940272"
},"
body":{
“type”: “offer”, “sdp": sessionDesc
}
});
}, function(e){ console.log("error"); });
pc. createAnswer(function(sessionDesc) {
pc.setLocalDescription(sessionDesc);
ws.send(JSON.stringify({
"header":{
"command":“sdp", "token":" TKS11432169940272 "
},"
body":{
“type”: “answer”, “sdp": sessionDesc
}
});
}, function(e){ console.log("error"); });
Offer
Answer
Candidate
{
"header":{
"command":“candidate",
"token":"TKS11432169940272"
},"
body":{
“candidate":"
{"sdpMLineIndex":1,"sdpMid":"video","cand
idate":"candidate:1816031214 ....."
}
}
{
"header":{
"command":“candidate ",
"token":"TKS11432169940272",
"sender":"TKS11432169945602"
},"
body":{
“candidate ":"
{"sdpMLineIndex":0,"sdpMid":"audio","can
didate":"candidate:2629291569..... "
}
}
Offer Signal Answer
Candidate
pc.onicecandidate = function(e){
if(e.candidate){
ws.send(JSON.stringify({
"header":{
"command":“candidate",
"token":"TKS11432169940272"
},"
body":{
“candidate": e.candidate
}
});
};
};
DataChannel
• SCTP or RTP
• Unreliable or reliable
• WebSocket 과 같은 API
• 대용량 파일 전송 시 Worker, File API 사용
• 타 플랫폼과의 파일 교환 시엔 base64 또는
ByteArray 를 사용
Datachannel 생성
var pc = new PeerConnection({
iceServers: []
}, {
optional: [
{ RtpDataChannels: false }
]
});
var data = pc.createDataChannel("webrtc_test", { });
Worker
Worker
worker = new Worker("worker.js");
worker.onmessage = function(event
alert(event.data);
};
worker.postMessage(“Hello Worker!!");
Worker
onmessage = function(e){
var data = e.data, reader = null;
if(!FileReaderSync) {
reader = new FileReader();
reader.onload = function(e){
postMessage(e.target.result);
};
reader.readAsArrayBuffer(data);
} else{
reader = new FileReaderSync();
postMessage(reader.readAsArrayBuffer(data));
}
};
Worker
var javascript = function(e){
var data = e.data, reader = null;
if(!FileReaderSync) {
//
} else{
//
}
};
var blob = new Blob([ "onmessage = " + javascript.toString() ], {
type: "application/javascript"
});
blob = URL.createObjectURL(blob);
var worker = new Worker(blob);
Typed Array
• Binary Data handling
• Buffer and View
• Buffer 는 길이가 정해진 이진 데이터 버퍼
• View 는 Buffer 로 부터 값을 읽거나 쓸 수 있도
록 로우 레벨 인터페이스 제공
var buf = new ArrayBuffer(text.length * 2),
view = new Uint8Array(buf), i = 0, char = null,
len = text.length, j = 0;
for(;i < len; i++) {
char = text.charCodeAt(i);
view[j] = char >>> 8;
view[j + 1] = char & 0xFF;
j = j + 2;
}
var arr = this.packetSplit(buf, 66488),
hbuf = new ArrayBuffer(36),
dv = new DataView(hbuf);
dv.setFloat64(0, id);
dv.setInt32(8, 0);
dv.setFloat64(12, buf.byteLength);
dv.setInt32(20, 0);
dv.setInt32(24, arr.length);
dv.setInt32(28, 0);
dv.setInt32(32, arr[0].byteLength);
send(dv.buffer, arr, 0);
대용량 파일 보내기
1. Worker와 File API 를 통해 파일을 ArrayBuffer변환
2. ArrayBuffer 를 적절한 사이즈로 잘라서 배열로 보관
3. Typed Array 를 활용하여 파일 개요를 담은 Header
를 생성
4. Header 와 잘라진 파일 배열을 결합하여 전송
5. 배열을 끝날 때까지 반복하여 전송
Header Body 전송
대용량 파일 보내기
WebRTC 구현 끝!
하지만..
IOS
Android
Internet Expolor
Codec
H.264
Monitoring
TURN
Signaling
1:N
N:N 성능
과금
broadcasting
품질
IOS
Android
Internet Expolor
Codec
H.264
Monitorin
g
TURN
Signaling
1:N
N:N 성능
과금
broadcasting
품질
PlayRTC
PlayRTC
• WebRTC 서비스 플랫폼
• WebRTC 개발을 잘 모르는 비전문가도 쉽게 새로운
비즈니스를 만들어갈 수 있도록 플랫폼과 API를 제공
• Web browser 외에 다양한 스마트 디바이스를 지원
(Android, IOS, IE)
• http://playrtc.com
• https://github.com/playrtc
PlayRTC Coding
• Live Coding
WebRTC Internals
• chrome://webrtc-internals
WebRTC Internals
• Peer CandidateType
• bwe
• bandwidth estimation
• Packet Lost, RTT, Jitter 등으로 네트웍 상태를 파악
• Video Frame Width, Frame Height, Frame Rate 등 확
인
테스트
• selenium
• web app 를 위한 테
스팅 프레임워크
• 자동화 테스트를 위한
기능을 제공
• nightwatch.js
• selenium 을 node.js 에서 사
용할 수 있도록 제공
설치
• JDK 6 이상 설치
• node.js 설치
• nightwatch 설치
• npm install nightwatch
• selenium 설치
• selenium-server-standalone-x.x.x.jar 를 다운받아서
원하는 폴더에 저장
• 브라우저 드라이버 설치
• Driver 저장소에서 원하는 브라우저 드라이버를 다운받
아 원하는 폴더에 저장
테스트 코드 실행
• node ./bin/nightwatch.js --env chrome,chrome
-g single-page
Q n A

Weitere ähnliche Inhalte

Was ist angesagt?

쿠버네티스 기반의 5G V2X Mediation Cluster 개발
쿠버네티스 기반의 5G V2X Mediation Cluster 개발쿠버네티스 기반의 5G V2X Mediation Cluster 개발
쿠버네티스 기반의 5G V2X Mediation Cluster 개발ksdc2019
 
Tdevelopers forum web_rtc 기술 및 api 활용
Tdevelopers forum web_rtc 기술 및 api 활용Tdevelopers forum web_rtc 기술 및 api 활용
Tdevelopers forum web_rtc 기술 및 api 활용Tdev SKtelecom
 
An Introduction to WebRTC
An Introduction to WebRTCAn Introduction to WebRTC
An Introduction to WebRTCMinJae Kang
 
[1A4]자바스크립트 라이브러리 개발 운영 경험기
[1A4]자바스크립트 라이브러리 개발 운영 경험기[1A4]자바스크립트 라이브러리 개발 운영 경험기
[1A4]자바스크립트 라이브러리 개발 운영 경험기NAVER D2
 
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_korea
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_koreaF5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_korea
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_koreaInfraEngineer
 
Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Seung-Hoon Baek
 
Calico routing modes_trans_by_duck_in_korean
Calico routing modes_trans_by_duck_in_koreanCalico routing modes_trans_by_duck_in_korean
Calico routing modes_trans_by_duck_in_koreanInfraEngineer
 
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2InfraEngineer
 

Was ist angesagt? (8)

쿠버네티스 기반의 5G V2X Mediation Cluster 개발
쿠버네티스 기반의 5G V2X Mediation Cluster 개발쿠버네티스 기반의 5G V2X Mediation Cluster 개발
쿠버네티스 기반의 5G V2X Mediation Cluster 개발
 
Tdevelopers forum web_rtc 기술 및 api 활용
Tdevelopers forum web_rtc 기술 및 api 활용Tdevelopers forum web_rtc 기술 및 api 활용
Tdevelopers forum web_rtc 기술 및 api 활용
 
An Introduction to WebRTC
An Introduction to WebRTCAn Introduction to WebRTC
An Introduction to WebRTC
 
[1A4]자바스크립트 라이브러리 개발 운영 경험기
[1A4]자바스크립트 라이브러리 개발 운영 경험기[1A4]자바스크립트 라이브러리 개발 운영 경험기
[1A4]자바스크립트 라이브러리 개발 운영 경험기
 
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_korea
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_koreaF5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_korea
F5 container ingress_service_in_kuernetes_with_calico_cni_by_duck_in_korea
 
Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현
 
Calico routing modes_trans_by_duck_in_korean
Calico routing modes_trans_by_duck_in_koreanCalico routing modes_trans_by_duck_in_korean
Calico routing modes_trans_by_duck_in_korean
 
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2
[MeetUp][2nd] 오리뎅이의_쿠버네티스_네트워킹_v1.2
 

Andere mochten auch

WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016Blisson Choi
 
[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래NAVER D2
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with KurentoLuis Lopez
 
자막을 뿌리려면 해야 할 여러가지 삽질모음
자막을 뿌리려면 해야 할 여러가지 삽질모음자막을 뿌리려면 해야 할 여러가지 삽질모음
자막을 뿌리려면 해야 할 여러가지 삽질모음Young-Ho Cha
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...Luis Lopez
 
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013Junho Choi
 
Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08sung young son
 
MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스DoHyun Jung
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
Web rtc 핵심 기술에 대한 이해
Web rtc 핵심 기술에 대한 이해Web rtc 핵심 기술에 대한 이해
Web rtc 핵심 기술에 대한 이해Dahyun Kim
 
E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교Jung Kim
 

Andere mochten auch (12)

The WebRTC Data Channel
The WebRTC Data ChannelThe WebRTC Data Channel
The WebRTC Data Channel
 
WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016
 
[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
 
자막을 뿌리려면 해야 할 여러가지 삽질모음
자막을 뿌리려면 해야 할 여러가지 삽질모음자막을 뿌리려면 해야 할 여러가지 삽질모음
자막을 뿌리려면 해야 할 여러가지 삽질모음
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
 
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013
CDN 기술 동향과 전망 (CDN Technology Trends) - HSN 2013
 
Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08
 
MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
Web rtc 핵심 기술에 대한 이해
Web rtc 핵심 기술에 대한 이해Web rtc 핵심 기술에 대한 이해
Web rtc 핵심 기술에 대한 이해
 
E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교
 

Ähnlich wie Webrtc 허영남 20150528

7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...Chanjin Park
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸NAVER D2
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행Devgear
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Jay Park
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 releaseJaehyeuk Oh
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스Sungik Kim
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
Blockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreBlockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreihpark92
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST경원 이
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
Node.js and react
Node.js and reactNode.js and react
Node.js and reactHyungKuIm
 

Ähnlich wie Webrtc 허영남 20150528 (20)

Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
Blockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreBlockchain 2nd ethereum_core
Blockchain 2nd ethereum_core
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
Node.js and react
Node.js and reactNode.js and react
Node.js and react
 

Kürzlich hochgeladen

JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
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
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 

Kürzlich hochgeladen (8)

JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
데이터 분석 문제 해결을 위한 나의 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 소개
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 

Webrtc 허영남 20150528