![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/5WMZn/btquzGrSQD1/KwrKqZyYkT1gKPW1sQVgBK/img.png)
[ 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에 구현한 더하기 빼기 기능이 잘못된 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dthIpX/btqt7r91GIb/epQgomwdGM8Z3kBs0MnJt1/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lyhwg/btqt3HMfnKn/bivwh1NTZrl1a3aaIxqzLk/img.png)
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을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ey9Xzx/btqt3iSPVMV/vPtNTnNu4AAKyk7TucHiak/img.png)
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가 너무 친함 애..
CIA모임에서 추천받은 '함께 자라기 - 애자일로 가는 길 (김창준님)' 를 읽었다 내용이 너무 좋아서 밑줄쳐가면서 책을 꼭꼭 씹어서 읽었다 : ) 좋았던 내용들을 정리해야지~~~ 우선 애자일 개념에 대해서 알아보자 :) 애자일은 소프트웨어 개발 방법론 중 하나이다 > - ‘애자일’ 단어만큼이나 유연하고 민첩한 방법이다 - less document-oriented, 즉 문서를 통한 개발 방법이 아니라, code-oriented, 실질적인 코딩을 통한 방법론 : 일정한 주기를 가지고 끊임없이 프로토타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 방법 ( 전통적인 waterfall 방법 ) - 애자일 방법론 여러가지가 있는데, XP와 스크럼이 주류이다 * ..
- Total
- Today
- Yesterday
- Django FCM
- 플러터 싱글톤
- ribs
- drf custom error
- SerializerMethodField
- DRF APIException
- 구글 Geocoding API
- Flutter getter setter
- github actions
- Watch App for iOS App vs Watch App
- Dart Factory
- Flutter Clipboard
- Django Firebase Cloud Messaging
- cocoapod
- flutter build mode
- Flutter 로딩
- Python Type Hint
- 장고 URL querystring
- PencilKit
- Django Heroku Scheduler
- Flutter Text Gradient
- 장고 Custom Management Command
- ipad multitasking
- 플러터 얼럿
- flutter 앱 출시
- flutter dynamic link
- METAL
- Sketch 누끼
- flutter deep link
- Flutter Spacer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |