SK텔레콤 개발자센터 T developers의 개발자 포럼
T API Day 1st, ICT노믹스 시대를 향한 T API 활용
------------------------------------------------------------------------------
Session 1. SKT의 API 오픈 전략 및 T API 소개
WebRTC 기술 및 활용 | 최진호 매니저 (SK텔레콤)
------------------------------------------------------------------------------
브라우저에 별도 프로그램 설치 없이도 화상회의나 영상대화 서비스를 플러그인 없이 구현해 줄 WebRTC 기술을 개발중인 최진호 매니저는 SKT의 WebRTC 브랜드 PlayRTC를 소개하고, 누구나 쉽고, 빠르고, WebRTC 개발환경을 안정적으로 구현할 수 있음을 발표하였습니다.
------------------------------------------------------------------------------
https://developers.sktelecom.com/
A technical overview of the WebRTC Data Channel and common problems in its use. These slides accompanied a similar talk that was given in Paris as part of the WebRTC Conference Paris 2014. You can find the complete text of the presentation here: http://viblast.com/blog/2014/12/30/overview-webrtc-data-channel/.
W3C HTML5 Conference 2016 12월 7일에 발표한 WebRTC의 표준 과 기술 및 비즈니스 현황 및 미래에 대해 발표한 자료.
RemoteMonster 대표 최진호가 발표.
ORTC와의 관계
투자 현황
표준 발전 방향
기술 요소 소개
https://remotemonster.com
This presentation was used in the context of a FI-WARE webminar for introducing Kurento. Kurento is a framework for building multimedia and streaming applications based on predefined blocks. Send and receive median through RTP, WebRTC, HTTP and RTSP. Use processing for making face detection, plate recognition or object tracking. Use augmented reality, group communications or media mixing and blending among others. During the webminar, we used Kurento APIs for showing how to create media applications for videoconferencing or video streaming in a simple and seamless manner. We also demonstrated how these applications can be enriched with Kurento's advanced processing capabilities.
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...Luis Lopez
Creating WebRTC applications is simple, but making them scalable in a robust and efficient way isn’t. Due to this, many application developers do not dare to use their own infrastructures and instead prefer to leverage third party clouds for creating their scalable WebRTC services. These clouds are private and usually expose some kind of API that developers consume for accessing WebRTC communication capabilities such as group-communications, media recording or media transcoding. This model is very convenient for creating simple vertical applications, but it also has some drawbacks. First, these clouds billing models are based on pay-per-minute schemes that are not always compatible with the business models desired by application developers. Second, the exposed APIs tend to be restrictive and limit the freedom of developers for innovating. Third, these clouds, being fully private, cannot be extended or customized for specific needs developers may have.
In this talk, we propose an alternative solution to private WebRTC PaaS models based on leveraging novel cloud orchestration technologies such as Cloud Formation or Heat Templates for enabling developers to create their very own platform on top of public clouds. We analyze the technological ingredients required for enabling such models and present some experiments and production deployments showing how any developer may bring her own IaaS cloud for growing on it a full featured WebRTC platform with elastic scalability and full control on the billing and on the underlying technology evolution.
SK텔레콤 개발자센터 T developers의 개발자 포럼
T API Day 1st, ICT노믹스 시대를 향한 T API 활용
------------------------------------------------------------------------------
Session 1. SKT의 API 오픈 전략 및 T API 소개
WebRTC 기술 및 활용 | 최진호 매니저 (SK텔레콤)
------------------------------------------------------------------------------
브라우저에 별도 프로그램 설치 없이도 화상회의나 영상대화 서비스를 플러그인 없이 구현해 줄 WebRTC 기술을 개발중인 최진호 매니저는 SKT의 WebRTC 브랜드 PlayRTC를 소개하고, 누구나 쉽고, 빠르고, WebRTC 개발환경을 안정적으로 구현할 수 있음을 발표하였습니다.
------------------------------------------------------------------------------
https://developers.sktelecom.com/
A technical overview of the WebRTC Data Channel and common problems in its use. These slides accompanied a similar talk that was given in Paris as part of the WebRTC Conference Paris 2014. You can find the complete text of the presentation here: http://viblast.com/blog/2014/12/30/overview-webrtc-data-channel/.
W3C HTML5 Conference 2016 12월 7일에 발표한 WebRTC의 표준 과 기술 및 비즈니스 현황 및 미래에 대해 발표한 자료.
RemoteMonster 대표 최진호가 발표.
ORTC와의 관계
투자 현황
표준 발전 방향
기술 요소 소개
https://remotemonster.com
This presentation was used in the context of a FI-WARE webminar for introducing Kurento. Kurento is a framework for building multimedia and streaming applications based on predefined blocks. Send and receive median through RTP, WebRTC, HTTP and RTSP. Use processing for making face detection, plate recognition or object tracking. Use augmented reality, group communications or media mixing and blending among others. During the webminar, we used Kurento APIs for showing how to create media applications for videoconferencing or video streaming in a simple and seamless manner. We also demonstrated how these applications can be enriched with Kurento's advanced processing capabilities.
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...Luis Lopez
Creating WebRTC applications is simple, but making them scalable in a robust and efficient way isn’t. Due to this, many application developers do not dare to use their own infrastructures and instead prefer to leverage third party clouds for creating their scalable WebRTC services. These clouds are private and usually expose some kind of API that developers consume for accessing WebRTC communication capabilities such as group-communications, media recording or media transcoding. This model is very convenient for creating simple vertical applications, but it also has some drawbacks. First, these clouds billing models are based on pay-per-minute schemes that are not always compatible with the business models desired by application developers. Second, the exposed APIs tend to be restrictive and limit the freedom of developers for innovating. Third, these clouds, being fully private, cannot be extended or customized for specific needs developers may have.
In this talk, we propose an alternative solution to private WebRTC PaaS models based on leveraging novel cloud orchestration technologies such as Cloud Formation or Heat Templates for enabling developers to create their very own platform on top of public clouds. We analyze the technological ingredients required for enabling such models and present some experiments and production deployments showing how any developer may bring her own IaaS cloud for growing on it a full featured WebRTC platform with elastic scalability and full control on the billing and on the underlying technology evolution.
빅데이터 기술의 소프트웨어 공학 적용
1. 빅데이터 기술의 활용 사례 - 빅데이터 기술은 이미 많은 적용 사례를 가지고 있고, IoT 기술과 더불어 일상의 기술이 되어 가고 있다 (Pervasive & Invisible Analytics).
2. Spark 플랫폼 - 이전에 Hadoop으로 대표되는 빅데이터의 분산 처리 기술은 계속 발전하고 있고, Spark는 메모리 기반 데이터 처리로 기존 대비 성능을 10~100배 개선하였다. 특히, Spark는 Scala라는 함수형 언어로 구현되었고, 이전에 Java 기반의 빅데이터 처리 코드를 보다 명료하고 Compact하게 구현할 수 있다. 데이터 분석에는 Imperative 언어보다 함수형 언어가 보다 적합하다.
3. 소프트웨어 공학에서의 데이터 분석 사례 - 최근 Software Analytics, Repository Mining 등 데이터 분석 사례들이 있고, 최근 GitHub 이나 StackOverflow 분석과 같은 빅데이터 분석 연구들이 진행되고 있다.
4. Spark를 활용한 Word Count 예
5. Big Data Software Engineering - 큰 데이터 처리 외에도, 실시간 데이터 처리 (Velocity), 다양한 데이터 처리 (Variety) 부분에도 소프트웨어 공학 적용이 필요하다. 또한, Big Data Software를 Engineering하는 부분에도 관심이 필요하다. Big Data 분석 코드 역시 SE의 대상으로 바라보고, Test Driven Dev, Agile Methodology와 같은 개발 방법의 적용을 살펴볼 필요가 있다.
마지막으로, 현재 빅데이터 기술에 대한 진입 장벽은 많이 낮아졌고, 사용 가능한 오픈소스들이 많다. 소프트웨어 공학자라면 빅데이터 분석을 직접 시도해 볼 필요가 있고, 특히, Spark-Scala는 향 후 더욱 발전 확대될 기술이다.
MEAN 스택을 사용한 IoT 개발 예제를 설명합니다.
* MEAN 스택 기본 내용 소개
* Node.js와 Express를 활용한 간단한 CRUD 서버 작성 방법(아주 단순하지만 (인증을 제외한 나머지) RESTful 서버의 기본 내용을 구현함)
* MongoDB와 Mongoose ODM를 사용한 영속적인 자료 저장 방법
* AngularJS를 사용한 아주 간단한 모니터링 도구 구현(하지만 의존성 주입, 양방향 자료 결합, 라우팅 활용 방법이 모두 들어 있음)
* 모든 예제는 bitbucket(git 호스팅 서비스)에 공개되어 있음
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
Do IoT Yourself 세미나의 세 번째 발표 자료 프리뷰입니다.
이번 세미나에서는 지난 세미나에서 개발한 아두이노 기반 온도 센서 정보를 RESTful Web API 형태의 Open API로 개발하는 과정을 다룹니다.
프리뷰 자료이기 때문에 이후 수정, 변경될 가능성이 있으니 양해 바랍니다.
22. DataChannel
• SCTP or RTP
• Unreliable or reliable
• WebSocket 과 같은 API
• 대용량 파일 전송 시 Worker, File API 사용
• 타 플랫폼과의 파일 교환 시엔 base64 또는
ByteArray 를 사용
23. Datachannel 생성
var pc = new PeerConnection({
iceServers: []
}, {
optional: [
{ RtpDataChannels: false }
]
});
var data = pc.createDataChannel("webrtc_test", { });
26. 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));
}
};
27. 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);
28. Typed Array
• Binary Data handling
• Buffer and View
• Buffer 는 길이가 정해진 이진 데이터 버퍼
• View 는 Buffer 로 부터 값을 읽거나 쓸 수 있도
록 로우 레벨 인터페이스 제공
29. 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);
30. 대용량 파일 보내기
1. Worker와 File API 를 통해 파일을 ArrayBuffer변환
2. ArrayBuffer 를 적절한 사이즈로 잘라서 배열로 보관
3. Typed Array 를 활용하여 파일 개요를 담은 Header
를 생성
4. Header 와 잘라진 파일 배열을 결합하여 전송
5. 배열을 끝날 때까지 반복하여 전송
36. PlayRTC
• WebRTC 서비스 플랫폼
• WebRTC 개발을 잘 모르는 비전문가도 쉽게 새로운
비즈니스를 만들어갈 수 있도록 플랫폼과 API를 제공
• Web browser 외에 다양한 스마트 디바이스를 지원
(Android, IOS, IE)
• http://playrtc.com
• https://github.com/playrtc
39. WebRTC Internals
• Peer CandidateType
• bwe
• bandwidth estimation
• Packet Lost, RTT, Jitter 등으로 네트웍 상태를 파악
• Video Frame Width, Frame Height, Frame Rate 등 확
인
40. 테스트
• selenium
• web app 를 위한 테
스팅 프레임워크
• 자동화 테스트를 위한
기능을 제공
• nightwatch.js
• selenium 을 node.js 에서 사
용할 수 있도록 제공
41. 설치
• JDK 6 이상 설치
• node.js 설치
• nightwatch 설치
• npm install nightwatch
• selenium 설치
• selenium-server-standalone-x.x.x.jar 를 다운받아서
원하는 폴더에 저장
• 브라우저 드라이버 설치
• Driver 저장소에서 원하는 브라우저 드라이버를 다운받
아 원하는 폴더에 저장
42. 테스트 코드 실행
• node ./bin/nightwatch.js --env chrome,chrome
-g single-page