시나리오 import RxSwift import RxCocoa let disposeBag = DisposeBag() struct Student { var score: BehaviorRelay } let john = Student(score: BehaviorRelay(value: 75)) let mary = Student(score: BehaviorRelay(value: 95)) let student = PublishSubject() score을 가지고 있는 Student 타입을 관찰하기 위해 student라는 subject를 만들었다 [ 1 ] FlatMap student.flatMap { $0.score } .subscribe(onNext: { print($0) }).disposed(by: dispos..
[ 1 ] Unit Testing 이란 implement the feature and write the test…. & implement the feature and write the test…. & implement the feature and write the test…. ..... feature을 구현하고 test를 작성하고… 를 계속 반복하는 것이 유닛 테스팅이다 [ 2 ] 간단한 예제 - Calculator class Calculator { func add(_ a: Int, _ b: Int) -> Int { return a + b } func subtract(_ a: Int, _ b: Int) -> Int { return a - b } } Calculator에 구현한 더하기 빼기 기능이 잘못된 ..
1. Subject 1.1 Publish Subject - default값(초기값)이 없다 - 다른 옵져버가 subscribe한 순간 아무것도 주지 않지만 데이터가 발생하면 다 준다 1.2 Behavior Subject - default(초기값) 을 넣어주어야한다 - 값이 없을때 (초기값만 있을 때) subscribe하면 초기값을 주고, 값이 있을때 subcribe하면가장 최근의 것을 준다 - 중간에 error가 나면 subscribe하고 있는 모든 옵져버들한테 에러가 간다 1.3 ReplaySubject - default값(초기값)이 없다 - 다른 옵져버가 subscribe하면 여태까지 발생했던것 다 준다 1.4 AsyncSubject - default값(초기값)이 없다 - Subject가 comple..
1. Subject란 Observable과 Observer 모두로 동작할 수 있다. Subject는 ObservableType프로토콜을 채택하고 있는 Observable을 상속하고 있고 ObserverType프로토콜을 채택하고 있기 때문이다. 쉽게 말하면, 데이터를 넣어줄 수도 있고(emit시킬수도 있고), subscribe할 수도 있다. let subject = PublishSubject() let subcriptionOne = subject.subscribe(onNext: { (string) in print(string) }) subject.on(.next("1")) subject.onNext("2") Observable.just(3).subscribe(subject).disposed(by: disp..
1. Observable의 라이프사이클 Observable.just(1).debug("just").subscribe().dispose() 2019-04-04 12:14:44.633: just -> subscribed 2019-04-04 12:14:44.703: just -> Event next(1) 2019-04-04 12:14:44.710: just -> Event completed 2019-04-04 12:14:44.710: just -> isDisposed 2. Observable의 공유 - 옵저버블을 공유하지 않으면 subscribe 횟수 만큼 이벤트가 발생한다 - API Call을 하는 Observable을 두번 subscribe하면 API Call이 두번 일어난다 2.1 Observable을 ..
1. Rebase 사용 case: master 브랜치에서 branch1을 생성했다. (branch1의 base는 master의 마지막 커밋-) 근데 master 브랜치에서 어떤 VC의 이름을 바꾸고 싶어서 VC의 이름을 바꾸고 커밋했다 그러면 branch1이랑 master랑 VC이름이 달라진당---! 그 때 master 브랜치의 VC 이름바꾼 커밋으로 branch1을 rebase시켜준다 (branch1의 base는 master의 VC 이름 바꾼 커밋-) SourceTree에서 branch1을 현재 브랜치로 하고 원하는 커밋을 오른쪽 클릭하여 rebase 눌러주면 된다 :) + 아니면 merge master into 현재브랜치 해도 될 것 같다 이렇게 merge해주면 충돌이 날 것 같은데, unstaged..
1) Simple Search ( 단순탐색 ) - 시간복잡도 0(n) 배열의 처음부터 하나하나씩 비교하면서 찾는 방법. n개의 원소를 가진 리스트에서 Simple Search를 사용하면 최대 n 번의 search가 필요할 수 도 있다 2) Binary Search ( 이진 탐색 ) - 시간복잡도 O(logn) Simple Search와 달리, 절반씩 제외시키면서 찾는다 n개의 원소를 가진 리스트에서 Binary Search를 사용하면 최대 log2(n) 번만에 답을 찾을 수 있다 예를 들어, 리스트에 숫자가 8개 있다면 1) Simple Search - 최악의 경우 최대 8개의 숫자 확인 2) Binary Search - 최악의 경우 최대 log2(8) = 3개의 숫자확인 하는 것이다. ex) 리스트에 ..
[1] MVC (Model-View-Controller) * 장점 1) 역할분담을 고려한 구조를 빠르게 구현 할 수 있음 * 단점 1) MVC는 MVC (Massive View Controller) ?!!? Model에 넣기도 애매하고 View에도 넣기 애매한 코드들은 모두 Controller에 들어가게 되어서 Controller가 비대해진다 그래서 MVC를 Massive View Controller라고 풍자하기도 한다...! ex) 날짜 데이터를 각 국가별 양식으로 포맷하는 코드. 비즈니스 로직이나 데이터라고 보기도 어렵고 UI라고 보기도 어렵다 결국 이와같은 Formatting 담당코드들은 Controller에 들어가게 된다 2) 애플의 MVC 패턴에서는 View와 Controller가 너무 친함 애..
- Total
- Today
- Yesterday
- flutter build mode
- Watch App for iOS App vs Watch App
- Django FCM
- Django Heroku Scheduler
- Flutter Clipboard
- PencilKit
- ribs
- DRF APIException
- 플러터 얼럿
- METAL
- flutter deep link
- SerializerMethodField
- Flutter getter setter
- cocoapod
- Flutter 로딩
- flutter 앱 출시
- 장고 URL querystring
- drf custom error
- Sketch 누끼
- flutter dynamic link
- Flutter Spacer
- ipad multitasking
- github actions
- Python Type Hint
- Dart Factory
- 플러터 싱글톤
- Flutter Text Gradient
- 구글 Geocoding API
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |