SlideShare a Scribd company logo
1 of 10
Observable C++ expressions
using
Observable Library
-
NHN NEXT 이근원
Index
1. Observable C++ Expression
2. Observable Library
1. Features & Setting
2. Using Subject
3. Using Value
4. Using Property
Observable C++ Expression
- With Average Example
일반적으로 우리가 두 수의 평균을 구하는 방법.
값이 바뀌면 다시 평균을 계산한다.
요걸 Observable library를 사용하면...
값이 얼마가 변하던 다시 계산해줄 필요가 없다!
구독 메소드를 이용해 코드를 reactive하게 만들 수 있다.
-> Observable 라이브러리를 사용해 볼까?
Observable Library
- Feature
github : https://github.com/ddinu/observable
- Header-Only 라이브러리라 사용하기 쉽다.
- MSVC15 (VS 2017), GCC 5.4, 6.2, Clang 3.6~3.9 지원
- 손쉽게 Reactive Programming이나 Observer pattern을 구현할 수 있다.
Observable Library
- Setting
다들 아시겠지만~~ 사용법
- Observable 라이브러리의 Github에서 다운로드.
- Header Only 라이브러리기 때문에
디렉토리 설정만 해주면 된다.
Library Examples
- include & namespace
Library Examples
- With Subject
subject<T> 클래스 생성.
- 인자로 받은 형태를 내부에 std::function 형태로 저장.
- 내부 저장소는 Thread-safe 하지만
함수 호출 순서는 특정할 수 없음.
관심 있는 주제에 대해 구독.
- Subscribe : Subscribe 오브젝트를 반환.
- 오브젝트는 Unsubscribe를 위해 보관.
- 혹은 Release를 호출하여 분리할 수 있음.
이름을 입력 받고 Notify 메소드로 전파.
Library Examples
- With Values
value<T> 클래스 생성.
- 새로운 값이 들어올 때마다 std::equal_to<T>를 이용해 검사
- EqualityComparable하지 않다면 같지 않은 것으로 분류.
- 새 값이 기존 값과 같지 않다면(변화되었다면) Notify
관심 있는 값에 대해 Observe
- 이름이 변경될 때마다 구독된 함수 호출
Library Examples
- With Properties
Observable_property 선언.
- 기본적으로는 value<T>와 같음.
호출할 함수 구현.
- 이것 역시 앞 예제와 같음.
출처
-
Observable Library : https://github.com/ddinu/observable
Post : https://danieldinu.com/posts/observable-cpp-library/

More Related Content

Similar to Observable c++ expressions using the observable library 이근원

몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차seung-hyun Park
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 ChefOpen Source Consulting
 
Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Hong Hyo Sang
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기newdeal2
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)Ildoo Kim
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반arundine
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repositoryKyungHo Jung
 
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법Eclipse를 이용한 android_open_cv_개발_환경_구축_방법
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법HanBum Seo
 
Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼Hyounggap An
 
Angular CodeLab 두번째
Angular CodeLab 두번째Angular CodeLab 두번째
Angular CodeLab 두번째SangHun Lee
 
Making the neo pixel library for mblock extension
Making the neo pixel library for mblock extensionMaking the neo pixel library for mblock extension
Making the neo pixel library for mblock extensionKyung Man Shin
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating IntroductionJongwook Choi
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 

Similar to Observable c++ expressions using the observable library 이근원 (20)

Angular Library
Angular LibraryAngular Library
Angular Library
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 Chef
 
Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
12books
12books12books
12books
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repository
 
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법Eclipse를 이용한 android_open_cv_개발_환경_구축_방법
Eclipse를 이용한 android_open_cv_개발_환경_구축_방법
 
Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼
 
Angular CodeLab 두번째
Angular CodeLab 두번째Angular CodeLab 두번째
Angular CodeLab 두번째
 
Making the neo pixel library for mblock extension
Making the neo pixel library for mblock extensionMaking the neo pixel library for mblock extension
Making the neo pixel library for mblock extension
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 

Observable c++ expressions using the observable library 이근원

  • 1. Observable C++ expressions using Observable Library - NHN NEXT 이근원
  • 2. Index 1. Observable C++ Expression 2. Observable Library 1. Features & Setting 2. Using Subject 3. Using Value 4. Using Property
  • 3. Observable C++ Expression - With Average Example 일반적으로 우리가 두 수의 평균을 구하는 방법. 값이 바뀌면 다시 평균을 계산한다. 요걸 Observable library를 사용하면... 값이 얼마가 변하던 다시 계산해줄 필요가 없다! 구독 메소드를 이용해 코드를 reactive하게 만들 수 있다. -> Observable 라이브러리를 사용해 볼까?
  • 4. Observable Library - Feature github : https://github.com/ddinu/observable - Header-Only 라이브러리라 사용하기 쉽다. - MSVC15 (VS 2017), GCC 5.4, 6.2, Clang 3.6~3.9 지원 - 손쉽게 Reactive Programming이나 Observer pattern을 구현할 수 있다.
  • 5. Observable Library - Setting 다들 아시겠지만~~ 사용법 - Observable 라이브러리의 Github에서 다운로드. - Header Only 라이브러리기 때문에 디렉토리 설정만 해주면 된다.
  • 7. Library Examples - With Subject subject<T> 클래스 생성. - 인자로 받은 형태를 내부에 std::function 형태로 저장. - 내부 저장소는 Thread-safe 하지만 함수 호출 순서는 특정할 수 없음. 관심 있는 주제에 대해 구독. - Subscribe : Subscribe 오브젝트를 반환. - 오브젝트는 Unsubscribe를 위해 보관. - 혹은 Release를 호출하여 분리할 수 있음. 이름을 입력 받고 Notify 메소드로 전파.
  • 8. Library Examples - With Values value<T> 클래스 생성. - 새로운 값이 들어올 때마다 std::equal_to<T>를 이용해 검사 - EqualityComparable하지 않다면 같지 않은 것으로 분류. - 새 값이 기존 값과 같지 않다면(변화되었다면) Notify 관심 있는 값에 대해 Observe - 이름이 변경될 때마다 구독된 함수 호출
  • 9. Library Examples - With Properties Observable_property 선언. - 기본적으로는 value<T>와 같음. 호출할 함수 구현. - 이것 역시 앞 예제와 같음.
  • 10. 출처 - Observable Library : https://github.com/ddinu/observable Post : https://danieldinu.com/posts/observable-cpp-library/