Coder Social home page Coder Social logo

rxjavastudy's Introduction

Reactive Programming 스터디 Repo

📖 스터디 소개

반응형 프로그래밍을 RxJava2와 Kotlin을 활용하여 학습하는 스터디 입니다.

  • 약 1년 반정도 현업에서 RxJava2와 Kotlin을 사용하며 겪었던 상황들을 공유하고, 학습했던 것들을 강의 형식으로 알려주는 스터디 입니다.
  • Kotlin / Java의 기본 문법을 간단히 알고 있으면 좀 더 스터디에서 가져가실 수 있는것이 많을 것 같습니다.
    • 다른 언어의 ReactiveX 라이브러리를 사용하더라도, ReactiveX의 기초적인 사용 방법은 매우 비슷한 모습을 하고 있기 때문에, 다른 언어에 적용 하실떄에도 큰 무리 없을 것입니다.
  • 스터디는 매주 진행 될 예정 이며, 스터디당 예상 소요 시간은 길어야 2시간 정도 입니다.
  • 시간과 요일은 아직 정해지지 않았으며, 온라인으로 스터디를 진행 할 예정입니다.
    • 온라인 스터디 툴은 회의 후에 정할 예정입니다. ( Google meet / zoom ... )
  • 제가 강의에 썼던 자료 / 작성한 코드는 Notion 또는 Github에 공유 하도록 하는 것을 원칙으로 합니다.
  • 과제가 나갈 수 있으며, 과제를 무단으로 진행하지 않을 시 본인의 손해입니다.

📖 스터디 진행 커리큘럼 ( Alpha )

아직 구체적인 계획이 명확하게 정해진것은 아니며, 아래에 적힌 계획은 추후 변경 될 수 있습니다.

  1. 반응형 프로그래밍 / ReactiveX 소개
    • Observer Pattern 에 대하여
    • 반응형 프로그래밍에 대한 소개
    • ReactiveX / RxJava에 대한 소개
    • 실습 환경 구축
  2. RxJava 시작하기
    • Stream에 대한 개념 소개
    • Stream의 상태 ( onError, onSucess ... )에 대한 설명
    • ObservableSource / Observer
    • 마블 다이어그램 보는 법 소개
  3. Disposable / RxJava Observable의 종류 및 특징
    • Disposable에 대해서
    • Single / Completable / Flowable / Maybe에 대한 소개 및 각 차이점 설명
  4. Subscribe / Consumer, Action interface 에 대해서
    • Consumer, Action Interface
    • Subscribe operator
  5. RxJava Threading / Scheduler
    • Scheduler란
    • RxJava에서 사용하고있는 Scheduler의 종류
    • observeOn / subscribeOn
    • MultiThreading
  6. Subject에 대해서
    • Subject의 특징
    • Cold Publisher / Hot Publisher의 차이점
    • 미리 만들어진 Subject들의 종류별 특징 ( PublishSubject / BehaviorSubejct / AsyncSubject ... )
  7. 다양한 연산자 - 생성
    • create / just / defer / interval / ...
  8. 다양한 연산자 - 흐름 제어
    • filter / map / flatMap / switchMap
  9. 다양한 연산자 - 결합 / RxBinding
    • RxBinding
    • merge / concat / combineLatest / zip ...
  10. 다양한 연산자 - 에러 처리
    • retry / retryWhen / onErrorReturn ...
  11. Reactive Stream / RxJava
    • Observable vs Flowable
    • Subscription
    • Publisher / Subscriber
  12. MultiCasting / UniCasting
    • Subject
    • Connectable Observable
    • publish / refCount / share
  13. RxJava를 지원하는 Android 라이브러리를 사용 해보기
    • Retrofit과 연동 해보기
    • Room과 연동 해보기
  14. Custom Subject / Observable 만들어서 기존의 콜백을 Stream으로 변환하기
    • RxBinding 구현체 살펴보기

📖 저에 대한 소개

rxjavastudy's People

Contributors

bentkim avatar eabinn avatar eunseokhalverson avatar gooreum avatar handnew04 avatar kangraemin avatar kimriri avatar kkyu92 avatar leechungwoo92 avatar noommik avatar rencarlcw avatar simuelunbo avatar sunwoong-ii avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rxjavastudy's Issues

3주차 과제 - Stream의 구현체의 사용처를 각 구현체별로 생각 해 보기

과제 내용

RxJava2에 구현된 Stream의 구현체 ( Observable / Flowable / Maybe / Completable / Single )의 사용처를 한번 생각 해 보시고, 생각 나는데로 적어서 제출 해 주세요.

과제 목적

Stream의 구현체를 목적에 맞게 사용하도록 미리 생각해보도록 합니다.

유의사항

수업에서 말씀드린 Project의 root에 Homework 디렉토리를 만들어 주시고, md 파일의 형식으로 과제 작성 해 주시고 PR 남겨주세요.

8주차 과제 - 흐름 제어 operator 사용처 찾아오기

과제 내용

  1. map / flatMap / switchMap 등 수업때 다루었던 데이터 흐름제어 operator를 어떨 때 사용하면 좋은지 각 Operator 별로 생각 해와서 공유 해 주세요.
  2. map / flatMap / switchMap 등을 활용하여 데이터를 변환, 필터링 해 보고, 어떻게 동작하는지 확인 해 주세요. 수업때 보았던 예시코드들을 활용해도 좋고, 직접 만들어 보셔도 좋습니다
  3. Debounce / Throttle ( sample ) 도 무엇인지 공부해오고 예시 코드 작성하기

과제 목적

데이터 흐름 제어 operator의 활용처를 미리 생각 해 볼 수 있습니다.
데이터 흐름 제어 operator의 사용법에 익숙 해 질 수 있습니다.

1주차 과제 - Observer Pattern

과제 내용

  • Observer Pattern의 Subject / Observer 만들어보기

과제 목적

  • Observer Pattern에서 Subject / Observer가 어떻게 동작하고, 어떤 역할을 하는지 좀 더 명확히 알기 위함입니다.

7주차 과제 - 데이터 발행 operator 사용처 찾아오기

과제 내용

  1. Create / Defer / Just 등 수업때 다루었던 데이터 발행 operator를 어떨 때 사용하면 좋은지 각 Operator 별로 생각 해와서 공유 해 주세요.
  2. Create / Defer / Just 등을 활용하여 데이터를 발행 / 구독 해 보고, 어떻게 동작하는지 확인 해 주세요. 수업때 보았던 예시코드( 7ebaaab )들을 활용해도 좋고, 직접 만들어 보셔도 좋습니다

과제 목적

데이터 발행 operator의 활용처를 미리 생각 해 볼 수 있습니다.
데이터 발행 operator의 사용법에 익숙 해 질 수 있습니다.

9주차 과제 - RxBinding / 결합 연산자 활용하기

과제 내용

  1. RxBinding / 결합연산자를 활용하여 아래의 View를 구현 해 주세요
로그인뷰

email EditText
password EditText
로그인 버튼 

과제 
email / password 둘 다 1글자 이상인 경우만 로그인 버튼을 활성화 시키면 됩니다. 
  1. Merge / Concat / ConcatEager / Zip / CombineLatest 를 활용할 곳을 생각해보고 적어주세요.

6주차 과제 - Subject 사용처 찾아오기 / 발행, 구독 해보기

과제 내용

  1. PublishSubject / BehaviorSubject / AsyncSubject / ReplaySubject를 어떨 때 사용하면 좋을 지 찾아서 공유 해 주세요.
  2. Subject를 활용하여 데이터를 발행 / 구독 해 보고, 어떻게 동작하는지 확인 해 주세요. 수업때 보았던 예시코드( cbfbad1 )들을 활용해도 좋고, 직접 만들어 보셔도 좋습니다

과제 목적

Subject의 활용처를 미리 생각 해 볼 수 있습니다.
Subject의 사용법에 익숙 해 질 수 있습니다.

유의사항

5주차 과제 - 데이터 발행 / 구독 / Scheduler 적용 해보기

과제 내용

각자 플랫폼에 맞게 Observable / Single / Flowable / Maybe / Completable 에 대해 create 또는 just로 Stream을 만들고, 이를 구독하고, Scheduler를 적용해보기

과제 목적

플랫폼에 맞게 Stream을 생성 / 발행 / 구독 해보고, Scheduler를 활용 해보기

유의사항

모르는것 있으면 질문

4주차 과제 - Just 함수 구독해보기

과제 내용

// onNext 이벤트를 받았을 때 할 행동을 정의 한 경우
Observable
    .just("54321")
    .subscribe({ data: String ->

    }.)

// onNext, onError 이벤트를 받았을 때 할 행동을 정의 한 경우
Observable
    .just("54321")
    .subscribe({ data: String ->

    }, { throwable: Throwable ->

    })

// onNext, onError, onComplete 이벤트를 받았을 때 할 행동을 정의 한 경우
Observable
    .just("54321")
    .subscribe({ data: String ->

    }, { throwable: Throwable ->

    }, {
				// onComplete 이벤트가 발생 했을 때 실행 할 코드 
    })

위의 코드를 각자 플랫폼에 맞게 작성해보고, 실행시켜보시고 제출해주세요 !

과제 목적

subscribe 함수 활용을 한번 해보기 위함입니다.

유의사항

reactiveX 라이브러리를 각자 플랫폼에 맞게 설치하셔야 합니다 !

2주차 과제 - Marble Diagram 해석하기

과제 내용

  • Rx operator documents에서 operator의 Marble Diagram만 보고, 어떤 역할을 하는 operator 인지 유추 해 봅시다.
  • 갯수는 자율에 맡기나, operator 2개 이상 해보시면 좋을 것 같습니다.

과제 목적

  • Marble diagram 보는 법을 익혀 operator / stream의 행동을 좀 더 간단하게 확인 할 수 있도록 합니다.

유의사항

  • 먼저 operator에 대한 설명을 참조하지 않고 Marble diagram만 보고 분석 해 보시고, 해당 operator가 어떤 operator인지 찾아 보시는것을 권장드립니다.

10주차 과제 - Login 작업 및 Error handling

과제 내용

Retrofit / Room 등을 활용하여 로그인 작업을 구현 해 봅니다.

  1. kangraemin/simple_server_for_delivery#1 을 활용하여 로그인 작업을 구현합니다.
  2. https://r5670326j8.execute-api.ap-northeast-2.amazonaws.com/delivery_server/api/token/ 를 활용하여 로그인 작업을 진행합니다. ( 공지해드린 아이디와 비밀번호로 로그인 하시면 됩니다. )
  3. 서버에서 accessToken / refreshToken 값을 성공적으로 받아 왔다면, 로컬에 토큰값이 남아 있다면 Token 값을 삭제 한 뒤 새로 받아온 토큰 값을 저장 해 줍니다.
  4. https://r5670326j8.execute-api.ap-northeast-2.amazonaws.com/delivery_server/test/ 을 활용하여 받아온 토큰을 테스트 해 볼 수 있습니다.
  5. 테스트 api를 통해 Hello world ! 값이 들어온다면 토큰 값이 올바른 토큰 값 입니다.
  6. 만약 테스트 api를 통해 Hello world ! 값이 들어오지않고 아래의 형태로 결과 값이 온다면, refreshToken을 가지고 accessToken 값을 다시 받아온 뒤 test api를 재시도 하는 로직을 구현 해 주세요.
{
    "detail": "Given token not valid for any token type",
    "code": "token_not_valid",
    "messages": [
        {
            "token_class": "AccessToken",
            "token_type": "access",
            "message": "Token is invalid or expired"
        }
    ]
}

유의사항

과제를 다 하신 뒤, 추가적으로 인터넷이 끊겼을 때 1초마다 최대 5번까지 api를 재시도하는 로직을 추가 해 보세요.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.