2016 w3c conference #6 : reactivex + meteor 종단간 암호화 구현 사례

133
ReactiveX + Meteor 종단간 암호화 구현 사례 Appsoulute 이재호 1

Upload: -

Post on 16-Apr-2017

69 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveX+Meteor

종단간암호화구현사례Appsoulute이재호

1

Page 2: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

http://playnode.io/2012/30분동안Micro-Social-Networking서비스만들기

라이브코딩

2

Page 3: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

여러분에게

3

Page 4: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

팔아야할약이이만~~~큼

4

Page 5: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Reactive

Programing

Rx

MeteorE2E

Encryption Declarative

Programming

PublicKey

JavascriptCoreDDPTweetNacl

Functional

5

Page 6: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Reactive

Programing

Rx

MeteorE2E

EncryptionDeclarative

Programming

PublicKey

JavascriptCoreDDPTweetNacl

Functional

6

Page 7: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

역시Meteor

7

Page 8: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteor란?

8

Page 9: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteor란?Full-StackJavascript

Platform

9

Page 10: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteor란?ReactiveFull-Stack

JavascriptPlatform

10

Page 11: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

바쁘신분들을위해결론먼저

11

Page 12: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

1.Meteor로

실시간동시사용자

앱+서버를빠르게개발

12

Page 13: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

2.클라이언트가

웹이아닌경우

ReactiveX

13

Page 14: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Reactive

Programming?

14

Page 15: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveProgramming이란데이터흐름과변화전파에중점을

둔프로그래밍패러다임입니다.즉,프로그래밍언어에서정적또는

동적데이터흐름을쉽게표현할수있어야하며변경사항을데이터

흐름을통해자동으로전파한다는것을의미합니다.

https://en.wikipedia.org/wiki/Reactive_programming

15

Page 16: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Itisconvenienttodistinguishroughlybetweenthreekindsofcomputerprograms.Transformationalprograms

computeresultsfromagivensetofinputs;typicalexamplesarecompilersornumericalcomputationprograms.

Interactiveprogramsinteractattheirownspeedwithusersorwithotherprograms;fromauserpointofview,a

time-sharingsystemisinteractive.Reactiveprogramsalsomaintainacontinuousinteractionwiththeir

environment,butataspeedwhichisdeterminedbytheenvironment,nottheprogramitself.Interactiveprograms

workattheirownpaceandmostlydealwithcommunication,whilereactiveprogramsonlyworkinrespondto

externaldemandsandmostlydealwithaccurateinterrupthandling.Real-timeprogramsareusuallyreactive.

However,therearereactiveprogramsthatarenotusuallyconsideredasbeingreal-time,suchasprotocols,

systemdrivers,orman-machineinterfacehandlers.

GérardBerry-INRIAFr.

16

Page 17: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

17

Page 18: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

예를들면

18

Page 19: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

명령형프로그래밍

Imperative

programming

19

Page 20: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

명령형프로그래밍a=1이랜다

b=2랜다

c=a+b라고하면

c가3라고한다

a=4라고했는데

c는그래도3?????

20

Page 21: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

왜죠?

왜왜왜?

왜인거죠?21

Page 22: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

SpreadSheet(aka.excel)

22

Page 23: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

변경사항이자동으로적용

23

Page 24: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

function으로맛보기(coffee/ecma6)

a = 1b = 2c = a + bc3a = 3c3

a = -> 1b = -> 2c = -> a() + b()c()3a = -> 3c()5

a = ()=> 1b = ()=> 2c = ()=> a() + b()c()3a = ()=> 3c()5

24

Page 25: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Reactive

Programmingin

Meteor

25

Page 26: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveSource

+

ReactiveComputation

26

Page 27: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveSource

개소변훈련.

-오줌마려울때마다짖게한다.

-배변패드로이동

ReactiveJavaScript객체

-변경될때마다알려준다.

-변경이일어나면특정명령을

실행

27

Page 28: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveComputations물론개가아무리짖는다고해도

당신이집에없으면?

마찬가지로Reactivedata

sources는변경이있을때마다

해당데이터를수신대기함.

이곳이ReactiveContext.

변경이일어나면실행하는코드

블록을Reactive

Computation이라고한다.

28

Page 29: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteor

ReactiveCode/* reactive datasource 인 ReactiveVar를 선언 */let someValue = new ReactiveVar();

/* Reactive Computation. 변경이 일어나면 console.log에 출력 */Tracker.autorun(()=>console.log(someValue.get()));

/* reactive datasource의 변경 */someValue.set("Hello");

> Hello

someValue.set("Hello");

/* 변경이 일어나지 않으면 Reactive Computation도 일어나지 않는다 */

29

Page 30: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

하지만

30

Page 31: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

이것만으로부족하다!(서버없이클라이언트만할것이아니라면)

31

Page 32: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간어플리케이션

32

Page 33: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간동시사용자

어플리케이션

33

Page 34: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

변경동기화

34

Page 35: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DB저장

35

Page 36: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DB변경감지

36

Page 37: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

변경전달

37

Page 38: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DDPDistributedDataProtocol

38

Page 39: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DDP구성요소

Publish

Subscribe

Method-RPC

(RemoteProcedureCall)

https://github.com/meteor/meteor/blob/m

aster/packages/ddp/DDP.md

39

Page 40: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Subscribe요청

관심주제만들을래

40

Page 41: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Publish연결

ㅇㅇ필터링해줄께

41

Page 42: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Observe

빨대꽂기

(지속적변경반영)

영웅은죽지않아요.

42

Page 43: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Methodcall(RPC)

43

Page 44: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DB적용

44

Page 45: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

변경감지

45

Page 46: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

subscribe전송

46

Page 47: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

E2EEncryption

종단간암호화

47

Page 48: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Telegram망명사태

48

Page 49: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

지금은상식!

(aka.비밀채팅)

49

Page 50: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

저장소로부터대상이탈취되

거나감청당해도복호화할

수없어야한다

그..그렇군요;

친구에게선의로해준거라암호도안걸었지만...

50

Page 51: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

어떻게?

51

Page 52: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

2개의상자https://tweetnacl.js.org

SecretBox Box

52

Page 53: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

직접해봅시다!

53

Page 54: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Secretbox:secret-keyauthenticatedencryption

Message KeySymNonce

https://tweetnacl.js.org/#/secretbox

54

Page 55: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

암호화 복호화

55

Page 56: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Box:public-keyauthenticatedEncryption

Message SecretKey

(Privatekey)

AsymNonce

https://tweetnacl.js.org/#/box

PublicKey

56

Page 57: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Box:public-keyauthenticatedEncryption

https://tweetnacl.js.org/#/box

Message SecretKey

(Privatekey)

AsymNonce PublicKey

57

Page 58: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

암호화 복호화

1

3

45

2

1

5

6

순서대로생성하고복사해봅니다.

58

Page 59: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

SecretBox

빠른속도

키전달문제59

Page 60: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Box

안전한키전달

복잡+느리다60

Page 61: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

그렇다면

61

Page 62: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

KeySymNonceMessage

SecretKey

(Privatekey)

AsymNonce PublicKey

EncMessage

EncMessageMessage

62

Page 63: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

KeySymNonceMessage

SecretKey

(Privatekey)

AsymNonce PublicKey

EncMessage

EncMessageKey

63

Page 64: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

SecretBox로암호화

Key를Box로전달

64

Page 65: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Box로복호화한Key로

SecretBox를복호화

65

Page 66: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

키전달은공개키

복호화는대칭키

66

Page 67: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

PROFIT!쬲

67

Page 68: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실제로이것보단조금더복잡하긴해요...사용자의개인키보관/복원

패스워드변경

수신자의인원변경

과거메시지정책등등

68

Page 69: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

구현userA가userB에게암호화한메시지를보낸다.

69

Page 70: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

subpKey

1.대화방진입

subpKey

subroom

subroom

userB

userA

70

Page 71: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

2.사용자공개키요청

pubpKey

pubroomuserB

userA

71

Page 72: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

3.Documentkey생성

userB

userA

72

Page 73: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

4.Encryptdocumentkey

DDPMAGIC!

userB

userA

73

Page 74: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

5.Documentkey구조

userB

userA

74

Page 75: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

6.DecryptDocumentkey

userB

userA

75

Page 76: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

7.getDocumentkey

userB

userA

76

Page 77: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

8.message생성

abcdefghijklmnopqrst...

userB

userA

77

Page 78: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

9.Encryptmessage

abcdefghijklmnopqrst...

DDPMAGIC!

userB

userA

78

Page 79: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

10.GetEncryptedmessage

abcdefghijklmnopqrst...

abcdefghijklmnopqrst...

userB

userA

79

Page 80: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

11.Decryptmessage

abcdefghijklmnopqrst...

abcdefghijklmnopqrst...

userB

userA

80

Page 81: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

clientmeteor servermeteor mongoDB

12.Getdecryptedmessage

abcdefghijklmnopqrst...

abcdefghijklmnopqrst...

userB

userA

81

Page 82: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

최고다리액티브짱!

82

Page 83: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Mobile

83

Page 84: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

쉽게갈까요?

84

Page 85: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

아니오

85

Page 86: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

얜못믿겠는데요

86

Page 87: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Native로갑시다

87

Page 88: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

하지만...

88

Page 89: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteor밖은"위험"해ㄷㄷ

89

Page 90: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Async

Serialize

Exception90

Page 91: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

RectiveX

91

Page 92: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

AnAPIforasynchronous

programming

withobservablestreams

RectiveXhttp://reactivex.io/

92

Page 93: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

93

Page 94: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

94

Page 95: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

누가만들었나?

95

Page 96: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

믿을만한

마우스/키보드전문회사

Microsoft

96

Page 97: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

97

Page 98: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Polyglot고생은한번이면족할...까?

98

Page 100: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveXsupport...

Java:

Kotlin: (오호?)

Swift:

RxJava

RxKotlin

RxSwiftRxRealm(으응?)

RxFirebase(오옷!)

RxAndroid

RxCocoa

100

Page 101: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Map,Filter,Promise정도는써봤으니

101

Page 102: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

대충비슷하지않을까?

아니야...

102

Page 103: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

갑시다Native!

103

Page 104: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

큰그림

104

Page 105: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

WebSocket

DDP

Rx

105

Page 106: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Rx+Meteor(DDP)Login

Logout

UserProfile

Publish

Subscribe

Method

...Validations

106

Page 107: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

RxDDPloginpacketexample

method$=WebSocketResponseObservable.filtero->o.msgis'result'

collection$=WebSocketResponseObservable.filtero->o.collection

14:44:42.660 {"msg":"method","method":"login","params": [{"resume":"3MFpDmTtUXXkmKR5JJ0OUJODb_O19BzFXcLRu0JIqmd"}] ,"id":"1"}14:44:42.827 a {"msg":"added","collection":"users","id":"pJdkcRjHTGmKzE9hv"}14:44:42.829 a {"msg":"changed","collection":"users","id":"pJdkcRjHTGmKzE9hv", "fields":{ "emails":[{"address":"[email protected]","verified":false}] }}14:44:42.830 a {"msg":"updated","methods":["1"]}14:44:42.842 a {"msg":"result","id":"1","result":{ "id":"pJdkcRjHTGmKzE9hv", "token":"3MFpDmTtUXXkmKR5JJ0OUJODb_O19BzFXcLRu0JIqmd", "tokenExpires":{"$date":1484372528136}}}

107

Page 108: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

UI/Data의분리RPC(RemoteProcedureCall)한뒤callback을기다리지않음

Meteorserver에서내려주는datastream에만반응

108

Page 109: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ApplicationStructure

LoginViewRxMeteor

ProfileView

MessagesView

methodObservable

collectionObservable

ㄴusersObservable

ㄴmessagesObservable

subscribeObservable

logoutMethodCall

changePasswordMethodCall

usersSubscribe

loginMethodCall

signUpMethodCall

usersSubscribe

messagesSubscribe

usersSubscribe

sendMessageMethodCall

109

Page 110: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Login의경우1. local에서UniqueID를생성(methodID)

2. Loginmethod를methodID와함께call함

3. methodObservable중methodID로필터

4. 3을subscribe하고onNext일때메인화면이동/* login Method call */{"msg":"method","method":"login","params":[ {"user":{"username":"admin"},"password": {"digest":"ㄹㄹㄹㄹ","algorithm":"sha-256"}}], "id":"1"}

/* result */{"msg":"result","id":"1","result":{ "id":"kx4SooGR5avtZDWJN", "token":"ZMUvf03-buGVnblochaafOi1-BCrGcIoCMf9Buo9l4p", "tokenExpires":{"$date":1488373375267}}}

110

Page 111: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Logout의경우1. login에서받은자신의userId를알고있음

2. usersObservable중id가userId인것을필터

3. 자신의id가removed일때logout처리(result와무관)

4. 현재화면위치와상관없이logout처리가가능!

같은사용자가다른장비로동시접속시처리

/* Logout method call */{"msg":"method","method":"logout","params":[],"id":"2"}

/* subscribed collection */{"msg":"removed","collection":"users","id":"kx4SooGR5avtZDWJN"}

/* result of method */{"msg":"method","method":"logout","params":[],"id":"2"}

111

Page 112: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

유용한RxPattern

112

Page 113: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

CombineLatestvalidation

113

Page 114: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Debounce연타방지

114

Page 115: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

DistinctUntilChanged중복방지

115

Page 116: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ScanStateStore-reduce

116

Page 117: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ScanStateStore-reduce

오늘의나는태어날때의나부터

어제의나까지리듀스한것

117

Page 118: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

FlatMapSerialize

1ststart2ndstart1stend3rdstart2ndend3rdend

118

Page 119: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ConcatMapSerialize(10단콤보!)

1ststart1stend

2ndstart2ndend3rdstart3rdend

119

Page 120: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Example대방출FormValidation

Networktimeout

counter/wscan

draganddrop

doublesubscription/flapmap/switchmap

http://jsbin.com/fewuwan/edit?html,js,output

http://jsbin.com/zuqebo/edit?html,js,output

http://jsbin.com/bowumar/edit?html,js,output

http://jsbin.com/ziraga/edit?html,css,js,output

http://jsbin.com/buyose/edit?html,js,output

120

Page 121: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

이정도로시작해도좋아요<3

121

Page 122: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

RxReferencehttp://reactivex.io/tutorials.html

ReactiveXLab

https://www.facebook.com/groups/111

1730648912253/

122

Page 123: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

결론

123

Page 124: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간프로그래밍은

어렵다

124

Page 125: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간프론트엔드

프로그래밍은

어렵다

125

Page 126: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간프론트엔드

다중사용자

프로그래밍은어렵다

126

Page 127: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

실시간풀스택

다중사용자

프로그래밍은어렵다

127

Page 128: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

ReactiveProgramming하세요128

Page 129: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteorfull-stackreactivejavascriptplatform

129

Page 130: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteorfull-stackreactivejavascriptplatform

ReactiveXAnAPIforasynchronousprogramming

withobservablestreams

130

Page 131: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

Meteorfull-stackreactivejavascriptplatform

ReactiveXAnAPIforasynchronousprogramming

withobservablestreams

Meteorschool

https://www.facebook.com/groups/meteorschool/

ReactiveXLab

https://www.facebook.com/groups/1111730648912253/

131

Page 132: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

고맙습니다

Thankyou

132

Page 133: 2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례

참조

https://www.meteor.com/

http://reactivex.io/

https://tweetnacl.js.org/

http://rxmarbles.com/

http://spectrumdig.blogspot.kr/

133