[1] 실패하는 테스트를 작성한다 10/2 = 5 인지 나눗셈 테스트 해보는 코드인데 당연히 실패한다. Calculator를 만들지도 않았기 때문에-! [2] 빨리 테스트가 통과하게끔 만든다. (또는 컴파일에러가 안나게 일단 막 만들 수 도 있는데 간단한 함수라 바로 구현함) [3] 이제 제대로 동작하는 지를 검사하겠다는 마인드를 지닌다. 다른 실패할 테스트를 만들어본다 (0으로 나눴을때) [4] 테스트가 통과하게끔 만든다 이런식으로 테스트 코드를 먼저 만들고 구현을 점진적으로 해나가는 것이 TDD의 느낌(?) 인 것 같다 그리고 테스트주도개발 에서 나온 것 처럼 일단 빨리 테스트를 통과하게 만들고 그 와중에 생겨난 중복제거 등 리팩토링을 마지막 단계로 해줄 수 도 있다 기능구현을 하고 테스트 코드를 뒤..
[ TDD의 주문 ] TDD의 주문 = 빨강/초록/리팩토링 1. 빨강 - 실패하는 작은 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다 2. 초록 - 빨리 테스트가 통과하게끔 만든다. 이를 위해 어떤 죄악을 저질러도 좋다 (죄악이란 기존 코드 복사해서 붙이기, 테스트만 간신히 통과할 수 있게끔 함수가 무조건 특정 상수를 반환하도록 구현하기 등을 의미한다) 3. 리팩토링 - 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다 [ 예제 ] 1. 정말 리얼 말그대로 테스트를 가장 먼저 작성한다 public void testMultiplication() { Dollar five = new Dollar(5); five.times(2); assertEquals(10, five.amount)..
테스트 코드부터 작성하는 것이 감이 안와서 테스트 코드보다 먼저 ArtistAPIService를 작성해버렸다... 🙄 이전 포스팅에서 만들었던 ArtistAPIType을 이용하여...!!! 물론 다음과 같이 Artist모델도 만들어줬다...!!! 그리고 Apple Music API 홈페이지에 들어가서 해당 API에 해당하는 더미데이터를 복붙하여 넣어준 더미데이터 파일을 만들고 테스트 코드 있는 쪽에 넣어준다 BananaMusicTests 그룹안에 넣어주면 된다 (나의 토이프로젝트 이름은 BananaMusic이기때문...ㅎㅎ!! ) 그리고 실제 서버에서 주는 데이터가 아니라 이 더미데이터를 파싱하는 ArtistAPIServiceStub 을 만든다 (Stub, Mock, Spy 등등 다양한 용어들이 있던데 ..
테스트 코드를 제대로 공부하고 싶어서 예제 프로젝트를 진행중이다 아직 유닛테스팅도 잘 작성하지 못하지만 TDD 어떤지 너무 궁금해서 해보기로 했다 :-) 띄엄띄엄 조금조금 공부중인데 흐름을 놓치지 않도록 잘 정리해서 기록해두자 주제는 Apple Music API를 이용한 토이 프로젝트...!!! Apple Music API는 이렇게 모든 API마다 response json을 친절하게 알려주는데, 이 json을 dummy data로 쓰기에 딱 좋기 때문이다 일단 Apple Music API를 사용하기 위해서는 developer token이 필요하다 이 순서대로 차근차근 해서 keyID, teamID 를 알아내고 나의 private key가 담긴 .p8 file을 얻어내야한다 https://developer..
Signal와 Driver는 UI 계의 PublishSubject / BehaviorSubject 같은 것...! Signal과 Driver 의 공통점 - error를 return 하지 않는다. - 메인 쓰레드에서의 작동을 보장한다. - Rxcocoa에 있음 Signal과 Driver 의 차이점 - Signal은 새로운 구독자에게 replay 해주지 않는다. (Driver 처럼 구독하는 순간 초기값이나 최신값을 주지 않는다. 구독한 이후에 발행되는 값을 받음. 위의 사진 참고) - Signal은 emit함수로 이벤트 처리 / Driver는 drive함수로 이벤트 처리 signal.emit(onNext: { (element) in } driver.drive(onNext: { (element) in } Rx..
https://medium.com/gett-engineering/rxswift-share-ing-is-caring-341557714a2d RxSwift: share()-ing is Caring - Gett Engineering - Medium RxSwift resource sharing can be hard. Learn about share(), which lets you define streams that share resources among their subscribers. medium.com 설명이 너무 감동적..🥺 share란 publish와 같은 컨셉인데, 옵져버블 공유를 위한 연산자이다 하지만 publish와 다르게 connect가 필요없다...! (👍) 그리고 publish는 옵져버블이 끝..
모바일 개발자를 위한 머신러닝 https://firebase.google.com/products/ml-kit/?authuser=0 Firebase ML Kit를 사용하면 숙련된 머신러닝 개발자든 이제 막 시작한 초보자든 관계없이 강력한 머신러닝 기능을 Android용 또는 iOS용 앱에 도입할 수 있습니다. firebase.google.com ML Kit는 기기별 API 와 Cloud API가 있다. 기기별 API는 데이터를 빠르게 처리하고, 네트워크 연결 없이 작동하며, 클라우드 기반 API는 Google Cloud Platform의 강력한 머신러닝 기술을 활용하여 보다 높은 정확도를 제공한다고 한다..! 그리고 커스텀 모델도 사용할 수 있다...!!! >__
iOS 디자인 패턴(MVC/MVVM/VIPER/Clean Swift/MVC-C /MVVM-C ) 을 다 쓰지 못했지만...!ㅠㅠ 일단 정리 MVVM도 다양한 종류가 있어서 정리를 해보고자 한다 ViewModel이 Model을 다루고 View는 다루지 않는다는 컨셉은 동일하고 두가지 옵션을 선택하여 쓰는 것 같다 1) ViewModel이 Coordinator(Navigation을 담당하는 녀석)에게 말하느냐 안하느냐 MVVM에서는 Navigation 관련 코드를 Coordinator 또는 Navigtor라는 녀석에게 다 맡긴다. 보통 Coordinator라고 많이 부르고 이런 디자인 패턴을 MVVM-C 라고 부른다. 이 Coordinator에게 "여기 화면으로 이동 좀 해주세요~" 하는 요청을 ViewMo..
- Total
- Today
- Yesterday
- ipad multitasking
- github actions
- Dart Factory
- flutter 앱 출시
- DRF APIException
- 구글 Geocoding API
- 장고 Custom Management Command
- Watch App for iOS App vs Watch App
- METAL
- drf custom error
- SerializerMethodField
- Django Firebase Cloud Messaging
- flutter build mode
- Django Heroku Scheduler
- 플러터 얼럿
- flutter dynamic link
- Flutter 로딩
- Flutter Clipboard
- Django FCM
- Python Type Hint
- Flutter Spacer
- PencilKit
- 플러터 싱글톤
- Flutter Text Gradient
- Sketch 누끼
- flutter deep link
- Flutter getter setter
- ribs
- cocoapod
- 장고 URL querystring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |