일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react-native-fast-image
- react
- 앱 성능 개선
- 라이브러리 없이
- 스켈레톤 통합
- 360도 이미지 뷰어
- 360도 이미지
- 360도 뷰어
- launch screen
- requirenativecomponent
- @sendable
- 리액트 네이티브
- 리액트
- ios
- Android
- 파노라마 뷰
- completion handler
- data driven construct
- React Native
- 뷰 생명주기
- native
- 구조적 정체성
- panorama view
- 네이티브
- React-Native
- launchscreen
- 뷰 정체성
- 명시적 정체성
- ssot
- SwiftUI
- Today
- Total
목록2025/02 (6)
Neoself의 기술 블로그

동일한 이미지를 담는 NeoImage의 onSuccess 콜백이 반복호출되는 이슈가 있었습니다.@State private var imageTask: ImageTask?func updateUIView(_ uiView: UIImageView, context: Context) { let url: URL? = { switch source { case .url(let url): return url case .urlString(let string): if let string = string { return URL(string: string) } return nil ..

이번 포스트에서는 이미지 캐싱 라이브러리의 캐시 히트율을 높이기 위한 프로젝트의 첫 단계로, Kingfisher 라이브러리의 핵심 구조를 분석하고 필수 모듈을 추출한 과정을 공유하려 합니다.프로젝트 배경 및 목표최근 모바일 애플리케이션에서 이미지 로딩은 사용자 경험에 직접적인 영향을 미치는 중요한 요소입니다. 이에 저는 다음과 같은 가설을 세웠습니다:이미지에 대한 카테고리 정보를 이미지 데이터와 함께 제공받을 수 있다면, 사용자의 이미지 사용 패턴을 학습하여 캐시 히트율을 향상시킬 수 있다. 이 가설을 검증하기 위해 우선 기본적인 이미지 캐싱 라이브러리를 구축할 필요가 있었고, 널리 사용되는 오픈소스 라이브러리인 Kingfisher를 참고하여 핵심 기능만을 추출하는 작업을 진행했습니다.0. Kingfis..

1. 3차 리펙토링2차 리펙토링 이후, 구조에 대해 아래와 같은 문제점을 파악하게 되었습니다. 1. 서비스 레이어의 분산으로 인한 응집도 저하BookSearchService는 BookMatchAPI 모듈 내부에 위치한 반면, ImageProcessService와 TextExtractionService는 BookOCRKit에 위치했으며, BookValidationService는 BookRecommendationKit 내부에 위치했습니다.때문에 같은 비즈니스 로직을 담당하는 서비스 레이어 컴포넌트끼리의 응집도가 저하되는 문제가 있었습니다. 2. 의존성 관리의 복잡성2개의 최상위 모듈이 3개의 서비스 레이어 컴포넌트들 중 일부를 직접 import하여 사용하고 있기에 Service 레이어와 Integration..
1. 2차 리펙토링이후 아래와 같은 이유들로 인해 2차 리펙토링의 필요성을 느끼게 되었습니다.- DeepSeek api처럼 로직 목표를 공유하는 다른 외부 API를 추가하거나 대체하고자 할때, 많은 개발 리소스가 소요됨.- BookMatchModule 내부 기능상 다른 역할을 하는 메서드 2개가 공존하고 있기에, 유지보수 용이성이 저하됨.- BookMatchModule 내부 세부로직들에 대한 책임이 명확히 분리되어있지 않음. 따라서 크게 4가지 변경점을 가져가고자 했습니다.1. API 계층 개선2. BookMatchModule 책임 분리3. 계층적 디렉토리 구조 도입4. 서비스 계층 도입 2. API 계층 개선 API 클라이언트 분리기존에는 DefaultAPIClient라는 단일 클래스에서 모든 API..

이번 포스트에서는 도서 추천 및 매칭 시스템인 BookMatchKit의 아키텍처 설계 과정에 대해 살펴보겠습니다.1. 1차 리펙토링1차 리펙토링에는 단일 책임원칙 준수를 최우선 순위로 고려해 다음과 같은 주요 모듈들로 구성하게 되었습니다.BookMatchKit/├── Sources/│ ├── BookMatchAPI/ # 외부 API 통신 계층│ ├── BookMatchCore/ # 핵심 도메인 계층│ ├── BookMatchKit/ # 비즈니스 로직 계층│ └── BookMatchStrategy/ # 알고리즘 구현 계층1.1 BookMatchCoreBookMatchCore는 프로젝트의 핵심 도메인 로직을 담고 있는 모듈로써 설계했습니다.BookItem: 도..

이번 포스트에서는 CoreML과 OCR을 활용한 도서 표지 인식 결과를 기반으로, 실제 도서를 매칭하는 시스템의 후처리 구현 과정을 공유하고자 합니다. 특히, 초기 기획과는 다르게 변경된 설계 과정과 그 과정에서 마주친 문제들을 어떻게 해결했는지 자세히 다루어보겠습니다.1. 초기 설계와 변경된 요구사항1.1. 초기 설계처음에는 다음과 같은 플로우를 계획했습니다:전처리: OCR 및 CoreML로 도서 표지에서 추출된 텍스트 제목/저자로 라벨링하여 전달후처리: 기존 구현된 searchOverallBooks 메서드로 도서 검색 후, 제목&저자 간 텍스트 유사도가 가장 높은 도서 반환public func searchOverallBooks(from sourceBook: RawBook) -> Single { ..