B2B Marketing Org Design - play.node...
Transcript of B2B Marketing Org Design - play.node...
![Page 2: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/2.jpg)
발표자소개
•현 TELEPASEE 개발자
•어쩌다 보니 처음 배우려고 한프로그래밍 언어가…
•OOP, 함수형 다 시도해 해볼 수 있는 JavaScript가너무 좋습니다. (node.js 만세)
• But… 뭔 소린지 몰라서 결국 열혈C 부터 하게 됨
![Page 3: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/3.jpg)
함수형프로그래밍
![Page 4: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/4.jpg)
잠깐…
•Arrow Function
x => x * 2
function (x) {return x * 2;
}
= (x) => (x * 2)
(x) => { return x * 2;}
![Page 5: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/5.jpg)
함수형프로그래밍특징 – 순수함수
•Pure Function
![Page 6: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/6.jpg)
함수형프로그래밍특징 – 일급함수
•First-Class Function
![Page 7: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/7.jpg)
함수형프로그래밍특징
•Persistent Immutable Data
•영속적이고 불변한 데이터
![Page 8: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/8.jpg)
함수형프로그래밍특징
![Page 9: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/9.jpg)
함수형프로그래밍특징
f ∘ 𝑔 ∘ ℎ (𝑥)
f(𝑥) 𝑔(𝑥) ℎ(𝑥)
![Page 10: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/10.jpg)
함수형프로그래밍
•더 나은 강의들
•Functional Programming Principles in Scala• https://www.coursera.org/learn/progfun1
•자바스크립트로 알아보는 함수형 프로그래밍• https://www.inflearn.com/course/함수형-프로그래밍
![Page 11: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/11.jpg)
오늘의 Library
Ramdahttp://ramdajs.com/
![Page 12: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/12.jpg)
Ramda
![Page 13: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/13.jpg)
Ramda
Maintenance문제도 있고…
성능향상을시켜보자underscore로는제대로된함수형코딩이어렵다!
좀더함수형코딩스타일을지원하자
lodash/fp
Ramda
![Page 14: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/14.jpg)
Ramda vs
> R.map( x => x * 2, [1, 2, 3] );
> [2, 4, 6]
> _.map( [1, 2, 3], x => x * 2 );
> [2, 4, 6]
![Page 15: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/15.jpg)
Ramda의 함수들은 모두 자동적으로 Curry 됩니다.
![Page 16: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/16.jpg)
![Page 17: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/17.jpg)
와 함께하는 간단 API
간단한 채팅 REST API Spec.
![Page 18: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/18.jpg)
와 함께하는 간단 API
우선 서버를 설정합시다.
위와 같이 패키지들을 설치해주시고
![Page 19: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/19.jpg)
r_exam/router.js
Router GET /messages | POST /message
![Page 20: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/20.jpg)
Validator GET /messages
![Page 21: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/21.jpg)
Validator POST /message
![Page 22: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/22.jpg)
Validator Refactoring
![Page 23: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/23.jpg)
Validator Refactoring
![Page 24: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/24.jpg)
Validator Refactoring
![Page 25: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/25.jpg)
R.path
![Page 26: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/26.jpg)
R.path
![Page 27: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/27.jpg)
R.isNil
![Page 28: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/28.jpg)
R.isNil
![Page 29: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/29.jpg)
R.compose
![Page 30: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/30.jpg)
R.compose
f 𝑔 ℎ 𝑥 = f ∘ 𝑔 ∘ ℎ (𝑥)
![Page 31: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/31.jpg)
R.compose
![Page 32: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/32.jpg)
R.last
![Page 33: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/33.jpg)
Validator with
![Page 34: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/34.jpg)
R.curry
![Page 35: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/35.jpg)
R.curry
![Page 36: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/36.jpg)
Curried
![Page 37: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/37.jpg)
R.allPass
![Page 38: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/38.jpg)
R.allPass
![Page 39: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/39.jpg)
Validator POST /message
![Page 40: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/40.jpg)
Try Ramda – Ramda REPL
![Page 41: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/41.jpg)
Try Ramda – 이럴때 좋아요.
•아래는 모두 실 사용예입니다.
•문자열 합칠 때
•중첩배열을 다루는 스크립트 짤 때
•함수형으로 짜다가 디버깅 할 때
•Doc내용이 뭔 소린지 도통 모를 때
![Page 42: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/42.jpg)
Ramda Cookbook
![Page 43: B2B Marketing Org Design - play.node 2017playnode.io/2017/slides/RAMDA_HAN.pdfRamda.js와함께하는간단API 서버만들기 한현섭(han@telepasee.com) 발표자소개 •현TELEPASEE](https://reader033.fdocuments.net/reader033/viewer/2022041710/5e4775f10dca21221c0b5cdd/html5/thumbnails/43.jpg)