분류 전체보기
-
Ch8. Measuring & Boosting PerformanceRay Wenderlich/CoreData 2022. 10. 31. 00:41
Measure, change, verify 개선을 위해 아래 3단계 사이클을 반복하자. [Measure] → [Change] → [Verify] → [Measure] 퍼포먼스를 체크하기 위해 Guage, Instrument, XCTest framework를 사용할 수 있다. 퍼포먼스를 향상시키는 코드를 작성한다. 다시 퍼포먼스를 측정하여 개선이 되었는지 확인한다. 이를 반복한다. 이 챕터에서 사용한 퍼포먼스 개선 NSManagedObject에서 불필요하게 큰 Binary를 Fetch하고 있다면 별도의 Entity로 분리하자. NSFetchRequest의 fetchBatchSize를 활용하여 한 번에 fetch하는 Object의 수를 줄여보자. NSExpression을 활용하여 필요한 데이터만 fetch하..
-
Ch7. Unit TestingRay Wenderlich/CoreData 2022. 10. 31. 00:41
Core Data stack for testing 좋은 유닛테스트는 FIRST를 따른다. Fast Isolated Repeatable Self-verifying Timely 이 샘플 프로젝트의 테스트 타겟은 서비스를 위한 앱 타겟과 다른 AppDelegate를 사용하도록 셋팅되어 있다. 코어 데이터는 디스크에 데이터를 Write한다. 하지만 이는 Isolated하지 않다. 또한 데이터가 영구적이기에 한 번 데이터를 Write하면 다른 테스트에 영향을 줄 수 있다. Repeatable하지 않다. 그렇다면 데이터를 Write하고 Delete해주면 어떨까? 이는 Fast하지 않다. 이를 해결하기 위해 in-memory SQLite store를 사용한다. class TestCoreDataStack: CoreDa..
-
Ch6. Versioning & MigrationRay Wenderlich/CoreData 2022. 10. 27. 22:41
마이그레이션이 필요한 아래 시나리오를 구현해본다. [노트를 작성할 수 있는 앱] 텍스트를 작성할 수 있다. 이미지를 추가할 수 있도록 변경. (Lightweight migration) 이미지를 여러장 추가할 수 있도록 변경. (Manual migration using Mapping model) 이미지가 아닌 다른 리소스도 첨부할 수 있도록 변경. (Manual migration using Mapping model and subclass of NSEntityMigrationPolicy) 연속적이지 않은 버전의 마이그레이션을 지원하기 Ex) v2 → v4 The migration process 마이그레이션은 3단계로 나뉜다. First, Core Data copies over all the objects f..
-
Ch5. NSFetchedResultsControllerRay Wenderlich/CoreData 2022. 10. 27. 22:34
NSFetchedResultsController의 세 가지 장점 Section Cache Monitoring 이전 챕터에서 봤듯, CoreData는 UITableView와 잘 어울린다. NSFetchedResultsController를 사용하면 UITableView와의 조합을 더 잘 활용할 수 있다. NSFetchedResultsController는 NSFetchRequest를 감싸며 FetchResult를 내부에 갖고 있다. 그래서 fetch하는 메소드의 리턴타입이 Void다. lazy var fetchedResultsController: NSFetchedResultsController = { let fetchRequest: NSFetchRequest = Team.fetchRequest() let zo..
-
Ch2. NSManagedObject SubclassesRay Wenderlich/CoreData 2022. 10. 27. 22:33
Modeling your data XCode Editor에서 attribute를 원하는대로 추가할 수 있다. 원하는 이름과 타입을 선언하면 된다. 타입은 매우 종류가 많다. Boolean, Date, Double, String, Integer16, Integer32, Integer64, UUID, URI 등 그리고 Binary Data도 있다. (blob형태로 저장하는 기능이 지원됨) 그런데 바이너리를 저장했다가는 이 엔티티에 접근할 때마다 바이너리 데이터가 메모리에 올라가기 때문에 비효율적이다. XCode는 이를 방지하고자 Attributes Inspector에서 Allows External Storage옵션을 제공한다. Allows External Storage → 데이터베이스에 바로 파일을 저장하지..
-
[Diary] 히가시노 게이고의 '기도의 막이 내릴 때'를 읽고무념무상일상/히가시노 게이고 2022. 10. 13. 01:17
줄거리(스포O) 소설의 시작 배경은 센다이의 술집. 다지마 유리코가 종업원으로 일하고 있다. 하지만 p.15에서 유리코는 사망한 채 발견된다. 다지마 유리코는 가가 교이치로의 어머니다. 유리코와 가깝게 지냈던 와타베 슌이치는 미야모토 야스요에게 가가의 연락처를 알려준다. 가가는 센다이로 와 유리코의 시신을 수습하고 유품을 정리한다. 가가는 와타베 슌이치가 누군지, 자신의 연락처를 어떻게 알아냈는지 모른다. 도쿄의 한 맨션에서 오시나티 미치코의 시신이 발견된다. 맨션의 주인은 고시카와 무쓰오. 미치코와 무쓰오의 관계는 유족들도 모른다고 했다. 역시나 사건이 시작부터 쉽지 않다. 비슷한 시기에 근처 공원 오두막에서 노숙자로 보이는 시신도 발견된다. 경찰은 이 노숙자가 와타베 슌이치일 것이라고 생각하고 그가 ..
-
[Diary] 히가시노 게이고의 '비밀'을 읽고무념무상일상/히가시노 게이고 2022. 10. 6. 00:28
줄거리(스포O) 야간 근무를 마친 헤이스케는 아내와 딸의 사고 소식을 듣게 된다. 나가노에서 스키버스가 추락한 것이다. 병원으로 달려갔지만 아내 나오코와 딸 모나미는 의식이 없다. 나오코가 눈을 떴지만 마지막으로 모나미의 손을 잡은 뒤 사망한다. 헤이스케는 모나미가 눈 뜨기를 기다린다. 그의 바람대로 모나미는 눈을 뜬다. 깨어난 모나미의 육신에는 알 수 없는 이유로 나오코의 영혼이 들어왔다. 헤이스케는 나오코와 둘만 아는 이야기를 통해 자신의 눈 앞에 있는 사람이 모나미가 아니라 나오코임을 확인한다. 나오코는(모나미의 몸이지만) 건강을 회복하고 퇴원한다. 헤이스케는 사고의 근본적인 원인을 알아내기 위해 고군분투한다. 버스 운전기사가 졸음운전을 할 수 밖에 없었던 이유는 돈을 많이 벌기 위함이었다. 그렇다..
-
[Diary] 히가시노 게이고의 '방황하는 칼날'을 읽고무념무상일상/히가시노 게이고 2022. 9. 28. 03:56
줄거리(스포O) 나가미네는 아내를 여의고 여고생인 딸 에마와 살고 있다. 아쓰야, 가이지, 마코토는 불꽃놀이가 있던 날, 마음에 드는 여자를 찾아 강간할 계획을 세운다. 안타깝게도 에마는 이 악마들에게 강간당한 뒤 죽임을 당한다. 나가미네는 딸의 죽음에 오열한다. 그리고 익명의 제보자로부터 딸을 살해한 범인의 정보를 얻게 된다. 아쓰야의 집에 찾아간 나가미네는 에마가 촬영된 비디오를 보게 된다. 이성을 잃고 아쓰야를 살해한다. 살인자가 된 나가미네는 이제 돌이킬 수 없다. 남은 스가노 가이지까지 찾아 죽여야 한다. 나가미네는 가이지를 찾아 나가노로 간다. 그 곳에서 펜션 '크레센토'의 주인 와카코를 만난다. 와카코는 나가미네가 수배중인 범죄자라는 것을 알아챈다. 하지만 그를 동정하고 이해하며 돕게 된다...