본문 바로가기

Computer

(7)
What is a Use Case? Use Case 의 정의 일반적으로 프로그래밍에서 말하는 Use Case 는 다음과 같이 정의될 수 있다. 사용자가 특정 시스템을 사용하는 방식을 정의한 것. 사용자가 특정 시스템을 사용하여 목적을 달성하기 위해 시스템이 제공해야 하는 기능의 단위. Use Case 의 특징 Use Case 를 작성할 때 일반적으로 지켜지는 여러 특징이 있다. Use Case 는 사용자의 관점에서 정의되어야 한다. (e.g. "로그인한 사용자는 게시판에 글을 등록할 수 있다." or "로그인한 사용자는 게시판에 글을 등록할 수 있어야 한다.") Use Case 는 "Actor" 와 "Action" 이 필요하다. (위의 예제에선 Actor: "로그인한 사용자", Action: "게시판에 글을 등록하다" or "글을 등록하다..
Class vs Struct 성능 비교 테스트 - 테스트에 사용된 Class 와 Struct 구현은 맨 밑에 있습니다. (+ 직접 테스트 해볼 수 있는 .swift 파일) - 실제 상황에서 측정한 것이 아니므로 정확한 측정이 될 수 없겠지만 최대한 변수 요소가 제한된 상황에서 테스트를 수행했다고 생각합니다. Allocation // - Simple ------------------------------------------------------------------------ // Average: 0.275 sec func test_measureAllocationPerformanceForSimpleClass() { measure { (1...REPEAT_COUNT).forEach { i in let ref = SimpleClass(id: i) } }..
[RealmSwift] Index 사용에 대한 성능 테스트 기록 RealmSwift 10.47.0 기준으로 작성된 글입니다. [READ] No indexing 총 Item 갯수 \ Query 실행 횟수 50,000 100,000 200,000 5,000 2.377 (초) 4.388 8.310 10,000 4.689 8.703 16.429 20,000 9.376 16.963 32.514 Yes Indexing 총 Item 갯수 \ Query 실행 횟수 50,000 100,000 200,000 5,000 0.436 0.440 0.435 10,000 0.874 0.873 0.906 20,000 1.749 1.755 1.773 [Write] No Indexing Query 실행 횟수 소요 시간 1,000 2.673 5,000 16.570 10,000 31.701 20,000..
RxSwift 구현에 대한 이해 기초 (1) - RxSwift 6.6.0 기준으로 작성된 글입니다. 해당 글은 RxSwift 의 사용법을 다루는 글이 아니라 구현에 대한 개인적인 이해를 돕기위해 작성된 글입니다. 목차: ObservableConvertibleType (Protocol) Observable (Class) ObservableType (Protocol) Observer (Protocol) AnyObserver (Struct) Event (Enum) EventConvertible (Protocol) Disposable (Protocol) Cancelable (Protocol) DisposeBase (Class) DisposeBag (Class) AtomicInt (Class) ObservableConvertibleType (Protocol..
[RxSwift] `UITextField.rx.text` 프로퍼티의 '예상치 못한 요소 방출' 이슈 문제: textField.rx.text.orEmpty.asDriver() .drive(with: self) { owner, text in print("text") } .disposed(by: disposeBag) 그림 1. `text` controlProperty 구독 예시 그림 1 처럼 `UITextField` 의 `text` controlProperty 를 구독한 상황에서 현재 화면이 dismiss 될때 구독 클로저가 한 번 더 실행되는 것 같은 현상이 발생. 해결과정: 문제의 구독과 연관 있는 다른 구독을 살펴보며 원인 파악 -> 아무리 봐도 문제가 없음(원인을 모르겠음) 여기저기 `debug()` operator 를 사용해가며 문제 원인 파악 -> 구독 문제가 아니라 `text` controlPr..
RxSwift.Single 구현에서의 `stopped` 변수의 의미 - RxSwift 6.6.0 기준으로 작성된 글입니다. RxSwift 구현을 살펴보던 도중 이해하기 힘들었던 로직에대한 기록. 문제: /** Subscribes `observer` to receive events for this sequence. - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources. */ public func subscribe(_ observer: @escaping (SingleEvent) -> Void) -> Disposable { var stopped = false return self.primitiveSequence.asObse..
Test Double 특징 다음과 같이 구조체와 프로토콜이 존재할 때, struct Post { let id: UUID let title: String } protocol PostRepositoryProtocol { var postCount: Int { get } func savePost(_ post: Post) throws -> Bool func getPost(by id: UUID) throws -> Post } Dummy - 매개변수 목록을 채우기 위한 빈 객체 - 사용되지 않을것이므로 프로토콜 요구 사항만 충족 final class PostRepositoryDummy: PostRepositoryProtocol { var postCount: Int = 0 // 사용되지 않음 // 호출되지 않음 func savePost(_ po..