일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 360도 이미지
- Android
- 구조적 정체성
- launch screen
- 네이티브
- ssot
- panorama view
- ios
- react-native-fast-image
- native
- 360도 뷰어
- React-Native
- react
- launchscreen
- privacyinfo.plist
- data driven construct
- 3b52.1
- 라이브러리 없이
- requirenativecomponent
- 리액트 네이티브
- 명시적 정체성
- 앱 성능 개선
- 뷰 생명주기
- React Native
- SwiftUI
- 스켈레톤 통합
- 파노라마 뷰
- 360도 이미지 뷰어
- 뷰 정체성
- 리액트
- Today
- Total
목록개발지식 정리/Swift (31)
Neoself의 기술 블로그
1. 기존 시스템의 한계점 및 기존 시스템 플로우 개선초기 도서 매칭 시스템은 GPT가 제공하는 도서 정보의 정확성을 전제로 설계되었습니다. 시스템은 단순히 제목, 저자, 출판사 간의 텍스트 유사도 비교에만 중점을 두었습니다. 하지만 테스트 과정에서 GPT가 실제로 존재하지 않는 도서를 추천하는 케이스가 상당수 발견되었습니다. 따라서, 기존 로직 흐름에 재시도 로직을 추가해, 존재하지 않는 책에 대한 매칭이 이뤄지는 것을 최소화하고자 했습니다.개선된 시스템 플로우 계획1. 책 추천에 대한 질문에 대해 GPT가 1~3개의 책 데이터 반환2. 각 책 데이터에 대해 재시도 횟수 3회로 두고 존재하는 책이 나올때까지 아래 내용반복수행 1. 제목과 저자를 네이버 책 검색 api query에 전달 후..
저번 게시글에서는 도서 매칭 시스템에 대한 테스트 환경 구축을 비롯해 설계를 진행하였으며, 해당 게시글에서는 본격적인 구현 과정을 다루고 있습니다.1. 도서 매칭 시스템 개요2. 검색 결과 반환 로직 구현 - 메서드 구현 - 테스트 환경 구축 - 트러블 슈팅3. 엣지케이스 처리를 통한 검색 결과 반환 확률 개선 - 빈 스트링 값 처리 - 부제가 잘못된 케이스 처리 - 영문 책 한글 제목 검색 문제 해결 - 코드 캡슐화4. GPT 연동 및 유사도 측정 구현 - ChatGPT API 연동 - 검색 결과 유사도 연산 - 최종 매칭 로직 구현5. 테스트와 성능 개선 - ExactMatchStrategy와 ContainsStrategy 구현 - 레벤..
tearDown(): 에러를 throw할 수 없습니다tearDownWithError() throws: throws 키워드가 있어 에러를 throw할 수 있습니다tearDownWithError(): Xcode 11.4부터 도입된 새로운 메서드입니다 Codable 프로토콜: Encodable과 Decodable 프로토콜을 함께 구현한 타입별칭(typealias) Encodable: 데이터를 JSON Plist 등의 형식으로 변환 가능한 프로토콜*Encoding: 데이터를 특정 형식으로 변환하는 과정(ex. String을 URL이나 Base64로 변환)struct User: Encodable { let name: String let age: Int // JSON으로 인코딩 let..
ChatGPT api를 활용해 사용자가 제시한 질문에 적합한 책을 추천하는 로직을 개발하면서 발생한 기술 도전과제의 해결과정을 정리한 글입니다.ChatGPT 반환값의 후가공 과정에 대한 이해도를 높히고자 하는 개발자분들께 도움이 되었으면 좋겠습니다. 0. 배경구현이 필요한 핵심로직은 아래 2개로 정리할 수 있습니다.책 추천: AI를 활용해 사용자의 질문에 답이 될 수 있는 책을 추천하고, 앱 내 서재 탭에 추가할 수 있도록 하기책 추가: 사용자가 책표지를 촬영할 경우, OCR촬영된 책 앱 내 서재 탭에 추가하기위 기능을 구현하기 위해선 결국 아래와 같은 기술적 고민으로 이어졌습니다.1. 사진촬영을 통해 책을 인식하는 로직2. ChatGPT로 책을 추천받는 로직1번과 2번 로직의 경우, ChatGPT만을 ..
이 글에서는 제가 클린 아키텍처를 공부하고, 이를 실제 프로젝트에 적용하면서 겪은 경험을 공유하고자 합니다. 클린 아키텍처 자체에 대한 이해도를 높히고 싶으신 개발자 분들께 도움이 되었으면 합니다. 배경Todo 앱을 개발하면서 가장 신경 쓴 부분은 오프라인 상태에서도 앱이 정상적으로 동작하는 것이었습니다. 사용자가 지하철에서 Todo를 추가하거나 수정하더라도, 네트워크가 복구되면 자연스럽게 서버와 동기화되어야 했죠. 이를 위해 CoreDataSyncService라는 동기화 전담 서비스를 구현했습니다. 하지만 시간이 지날수록 이 서비스는 점점 더 많은 책임을 떠안게 되었습니다. CRUD 작업마다 로컬 저장소 처리, 네트워크 요청, 위젯 업데이트까지... 모든 로직이 긴밀하게 얽혀있었죠.func update..
RxSwift는 ReactiveX 프로그래밍 패러다임을 Swift로 구현한 라이브러리입니다. 이 글에서는 RxSwift의 핵심 컴포넌트들이 어떻게 상호작용하며 동작하는지 실제 소스 코드를 통해 살펴보겠습니다. 아래 사진은 RxSwift 라이브러리의 내부 구현파일들의 의존성을 표현한 그래프입니다. 해당글을 통해 다루게 되는 파일들은 검정색 및 빨간색 줄처리하였습니다. RxSwift의 기본이 되는 타입 계층 구조는 다음과 같습니다:1. 핵심 타입 계층 구조1.1. ObservableConvertibleType모든 Observable 타입의 기본이 되는 프로토콜입니다.public protocol ObservableConvertibleType { associatedtype Element func as..
앱이 실행될 때, 성능에 영향을 주는 요소는 아래와 같이 나열해볼 수 있습니다.AllocationReference CountingMethod Dispatch 0.배경먼저 Swift가 제공하는 Value 타입과 Struct 타입을 먼저 설명드리겠습니다.값 타입 (Value Type)참조 타입 (Reference Type)structClassenumClosure기본 데이터 타입(Int, Double, String, Bool 등)Function컬렉션 타입들(Array, Dictionary, Set) 튜플 이 두 타입은 아래와 같은 차이가 있습니다. 1.1 메모리가 할당되는 위치값 타입: 실제 데이터가 Stack에 저장 참조 타입: 실제 데이터는 Heap에, 8바이트(운영체제 워드길이)길이의 데이터의 주소는 ..
안녕하세요. 본 게시글은 RxSwift 라이브러리의 공식문서 내용을 정리한 글입니다. RxSwift는 ReactiveX 라이브러리를 Swift 문법으로 사용할 수 있도록 제작된 라이브러리입니다.ReactiveX는 뭔가요?ReactiveX는 Microsoft사에서 제작된 라이브러리이며, 아래 문장으로 라이브러리를 소개하고 있습니다.옵저버블 스트림으로 비동기 프로그래밍을 돕는 API비동기 프로그래밍과 옵저버 패턴을 사용하기 쉽도록 돕는 라이브러리라고 이해하면 쉬울 것 같습니다.ReactiveX 배경ReactiveX의 동작방식은 Observable이 발행하는 하나 또는 연속된 항목에 Observer가 반응한다는 옵저버 패턴 기반의 동작원리에서 부터 시작됩니다.코드가 작성된 순서에 따라 실행되고, 완료되는 일..
오늘은 제가 출시한TyTE라는Todo 관리 앱에 오프라인 동기화 시스템을 도입하면서 배운 점들을 공유하고자 합니다. 특히 데이터 무결성 보장과 불변성 원칙을 지키면서도 사용자 경험을 해치지 않는 구조를 설계하는 과정에서의 고민들을 다뤄보겠습니다. 0. 기존 구현사항기존 TyTE의 모든 비즈니스 로직은 모두 네트워크 통신에 의존하고 있었습니다. 따라서, 네트워크 연결이 불안정하거나 없는 상황에서는 사용자가 할 일을 수정하거나 삭제하는 등의 기본적인 CRUD 작업도 수행할 수 없었습니다. 그러던 중, 일정관리를 보조하는 Notion 앱에서는 오프라인 상황에서도 일정 수정 및 이동을 지원하는 것을 보게 되었습니다. Notion을 사용하면서 오프라인 상황에서도 끊김 없이 작업할 수 있는 UX가 얼마나 중요한지..
이 글을 통해 전동 킥보드 대여 서비스 iOS 앱을 팀원들과 함께 개발하면서 겪었던 경험과 기술적 고민들을 공유하고자 합니다. 가장 먼저 전동 킥보드 대여 서비스를 만들기 위해 사용했던 기술 스택입니다.1. 기술 스택UI Framework: UIKit, SnapKitArchitecture: Clean Architecture + MVVM/MVCState Management: CombineDatabase: CoreDataMap Services: MapKit, CoreLocationSecurity: CryptoKit (비밀번호 암호화)2. 아키텍처 설계2.1 Clean Architecture와 각 레이어프로젝트를 시작하면서 가장 큰 고민은 아키텍처 설계였습니다. 초기에는 단순 MVC 패턴으로 시작했지만, 다음..