일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- rxjava
- Jetpack
- Java
- ViewModel
- livedata
- Algorithm
- leetcode
- Android
- Kotlin
- androidstudio
- ReactiveProgramming
- Room
- IntelliJ
- github
- sourcetree
- homebrew
- programmers
- FRAGMENT
- library
- Version
- Java8
- Database
- git
- Today
- Total
목록분류 전체보기 (54)
Learn & Run
목표 RxJava에서 중요한 요소인 연산자가 무엇인지 알아 보도록 하고 생성 연산자를 사용해보도록 합니다. 1. RxJava에서 연산자란 무엇인가? RxJava에서의 연산자는 메서드(함수) 입니다. 연산자를 이용하여 데이터를 생성하고 통지하는 Flowable이나 Observable 등의 연산자를 생성할 수 있습니다. Flowable이나 Observable에서 통지한 데이터를 다양한 연산자를 사용하여 가공 처리하여 결과값을 만들어 냅니다. 연산자의 특성에 따라 카테고리로 분류될 수 있습니다. 2. Flowable / Observable 생성 연산자 interval 지정한 시간 간격마다 0부터 시작하는 숫자(Long)을 통지합니다. initialDelay 파라미터를 이용해서 최초 통지에 대한 대기시간을 지정..
목표 RxJava에서는 람다 표현식을 자주 사용하기 때문에 메서드 래퍼런스를 배워보면 좋을 것이라고 생각합니다. 이번 시간에는 메서드 래퍼런스를 이용하여 람다 표현식을 조금 더 간결하게 표현해 보도록 합니다. 1. 메서드 래퍼런스란? 우리말로 번역하면 메서드 참조라는 의미입니다. 람다 표현식의 몸체 부분에 기술되는 메서드를 이용해서 표현되며, 메서드의 이름만 전달합니다. 구분자(::)를 붙이는 방식으로 메서드 레퍼런스를 표현합니다. 메서드 래퍼런스를 사용하면 람다 표현식은 더욱 간결해지게 됩니다. 2. 메서드 래퍼런스의 유형 ClassName :: Static Method 예) (String s) -> Integer.parseInt(s) --> Integer::parseInt ClassName :: In..
목표 충돌이란 무엇이고, 어떻게 해결하고, 어떻게 효율적으로 충돌을 피할 수 있고, 예방적인 차원에서 충돌이 덜 일어나게 할 수 있는가에 대해 알아보도록합니다. 브랜치를 나누었을 때, 각자 작업을 할 상황이 생깁니다. 하지만, 서로 같은 곳을 수정했을 경우 버전 관리 프로그램이 자동으로 병합할 수 없을 때 사용자에게 해결방법을 위임하는 경우가 종종 발생합니다. 1. 새로운 브랜치 test2를 추가하기 충돌을 실험하기 위해, 브랜치를 추가해주도록 합니다. 2. 새로 만든 브랜치에서 텍스트 파일 내용 수정하기 master 브랜치의 파일내의 텍스트 파일 내용도 동일하게 변경할 것 입니다. 저는 7번째 줄에 동일하게 작업을 해주도록 하였습니다. 3. master 브랜치로 이동후에 텍스트 내용 변경하기 test2..
목표 RxJava에서 사용되는 Java의 기본지식을 리뷰해보고, Java 8부터 지원하는 함수형 인터페이스와 람다의 개념을 이해해보고 사용해보도록 합니다. 1. 함수형 인터페이스 Java의 인터페이스입니다. 단 하나의 추상 메서드만 가지고 있는 인터페이스입니다. (예외로 Java 8에서 새롭게 도입된 Predicate, Consumer 인터페이스처럼 Default 메서드는 포함할 수 있습니다) 함수형 인터페이스의 메서드를 람다식으로 작성해서 다른 메서드의 파라미터로 전달할 수 있습니다. 람다식 자체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급합니다. Java 8에서 새롭게 추가된 함수형 인터페이스(Predicate, Consumer, Function) 외에 기존에 작성되어 있는 하나의 추상..
목표 지난 포스팅에서 Flowable과 Observable을 사용해왔습니다. 이번 포스팅에서는 또 다른 생산자인 Single, Maybe 그리고 Completable을 사용해보며 익숙해지도록 합니다. 또한 어떠한 차이점이 있는지 알아보도록 합니다. 이 3가지 클래스는 Flowable과 Observable처럼 대량의 데이터를 처리하는 것이 아니라 데이터를 최대 1건만 발행하는 생산자들인데 각각 어떠한 차이점들이 있는지 알아보도록 합니다. 1. Single 데이터를 1건만 통지하거나 에러를 통지합니다. 데이터 통지 자체가 완료를 의미하기 때문에 별도로 완료 통지를 하지 않습니다. 데이터를 1건만 통지하므로 데이터의 개수를 요청할 필요가 없습니다. onNext(), onComplete()가 없으며, 이 둘을 ..
목표 이전 포스팅에서 Branch를 왜 사용하여야 하는지와 사용했을 때 어떠한 이점이 있는지 확인해 보았습니다. 이번 포스팅에서는 나눠진 브랜치를 병합해 보도록 합니다. 1. master 브랜치를 더블클릭합니다. (Checkout 한다고 말하는 것과 동일합니다) 2. 현재 master 브랜치가 Checkout된 상태입니다. 가지고 오려는 브랜치는 test 브랜치이기 때문에 test 브랜치에서 우클릭하여 Merge test into master를 클릭합니다. 3. 병합(Merge)후 버전을 확인합니다. 아래와 같이 master 브랜치로 Merge branch 'test'라는 메시지로 Commit된 것을 확인할 수 있습니다. 이번 포스팅을 통해서 파일을 Copy하고 각각 다른 작업을 한 후에 Copy된 파일..
목표 이번 포스팅에서는 Git에서의 브랜치(Branch)의 용어를 이해해보고 사용 이유에 대해서 알아보도록 합니다. 하나의 버전안에서 안정적인 작업과 안정적이지 않은 작업을 동시에 진행하는 도중에, 미래가 불분명하거나 되돌리고 싶은 부분에 대해서 Reset과 Revert을 이용하고 싶은 충동이 들 수 있습니다. 하지만, 생각보다 쉬운 상황은 아닙니다. 프로젝트가 거대해지고 관리하는 파일들이 많다는 가정하에 우리가 되돌리고 싶은 부분만을 오려내는 작업을 하는 것은 쉽지 않습니다. 해결책으로 같은 버전의 프로젝트를 복사하여 안정적인 작업과 안정적이지 않은 작업을 분리해서 하는 것이 좋지 않을까하는 생각이 들 수도 있습니다. 결국, 원본과 카피된 프로젝트에 각각 하고자했던 일들을 잘 마무리 했다고 가정해봅시다..
목표 이전 포스팅에서 Flowable과 Observable의 차이를 알아보면서 배압이 무엇인지 알아보았습니다. 이번 포스팅에선 배압 전략에는 어떤 것들이 있는지 알아보고 간단한 소스 코드로 적용해봅니다. 배압 전략 RxJava는 BackpressureStrategy를 통해 Flowable이 통지 대기 중인 데이터를 어떻게 다뤄야하는지에 대한 전략을 제공합니다. 1) MISSING : 처음엔 배압을 적용하지 않다가, 나중에 onBackpressureXXX()로 배압을 적용할 수 있습니다. 2) ERROR : 통지된 데이터가 버퍼의 크기를 초과하면 Exception을 통지하는 전략입니다. 이전 포스팅에서 배압 기능을 설명할 때 소스코드로 작성한 부분에서 ERROR전략을 확인해 볼 수 있었습니다. 3) BUF..
목표 생산자인 Flowable과 Observable의 차이점을 이해해보도록 합니다. Flowable vs Observable 1. Reactive Streams 인터페이스 구현 유무 Flowable은 Reactive Streams 인터페이스를 구현합니다. Observable은 Reactive Streams 인터페이스를 구현하지 않습니다. 2. 데이터 처리 Flowable은 Subscriber라는 구독자로 데이터를 처리합니다. Observable은 Observer라는 구독자로 데이터를 처리합니다. 3. 구독 해지 Flowable은 Subscription으로 구독을 해지합니다. Observable은 Disposable로 구독을 해지합니다. 4. 배압(Back Pressure) 기능 Flowable은 배압 기..
목표 이전 포스팅에서 다룬 Reset과 마찬가지로 삭제할 때 사용하는 Revert를 사용해보며 이해해보도록 합니다. 1. Revert를 사용하기 전에 다음과 같이 버전들을 준비하기 아래 그림은 Revert했을 때 어떤 것이 달라지는지 확인하기 위한 준비 과정입니다. 2. 최종 Commit에서 Revert하기 Revert하기 위한 방법은 아래 그림과 같습니다. 3. Add First 버전으로 돌아가보기 주의할 점으로는 어떤 특정한 버전으로 돌아가기 위해서 그 중간의 버전들을 스킵하여 Revert를 하게되면 Complict가 발생하기 때문에 순차적으로 취소하길 권장합니다. 아래의 그림들을 통해 순차적으로 취소하는 과정임을 확인합니다. 3. Reset과 Revert 다시 한 번 이해하기 Reset은 선택된 버..