Flutter, Chopper로 TMDB API 호출해서 영화 정보 받아오기
Language/Flutter2024. 6. 11. 00:27Flutter, Chopper로 TMDB API 호출해서 영화 정보 받아오기

ChopperAPI Endpoint를 쉽게 정의할 수 있는 코드를 생성합니다.request의 header를 추가하고 URL을 제공하며 처리하는 요청에 interceptor와 converter를 적용하는 역할도 담당합니다.설치24년 6월 10일 기준으로 설치를 위해 아래와 같이 추가했습니다.# pubspec.yamldependencies: chopper: ^8.0.0dev_dependencies: build_runner: ^2.4.9 chopper_generator: ^8.0.0Chopper 코드 생성ChopperService 클래스를 확장하는 추상 클래스에서 @ChopperApi annotation 사용@Get 말고도 다른 요청들도 있습니다.@Post@Put@Patch@Delete@Head// mo..

iOS 앱의 생명주기(App Life Cycle)
Life style/TIL2024. 6. 5. 00:11iOS 앱의 생명주기(App Life Cycle)

앱의 현재 상태에 따라 언제든지 할 수 있는 것과 할 수 없는 것이 결정된다.앱이 상태가 변경됨에 따라 그에 따라 동작을 조정해야 한다.iOS 13이상에서는 UISceneDelegate 개체를 사용하여 scene-based app의 수명 주기 이벤트에 응답한다.앱이 Scene을 지원하는 경우 UIKit은 각각에 대한 별도의 수명 주기 이벤트를 제공한다.Scene은 기기에서 실행되는 앱 UI의 한 인스턴스를 나타낸다.UIApplicationSceneManifest 를 추가하면 앱이 Scene 기반으로 작동하도록 설정된다. 이를 통해 멀티태스킹을 지원하고 여러 창을 동시에 열어서 작업할 수 있게 된다. Opt-in feature로 기본적으로는 단일 윈도우를 가지고 Scene 기반의 생명 주기 관리가 비활성화..

Swift에서 Optional이란?
Life style/TIL2024. 6. 4. 19:57Swift에서 Optional이란?

wrapped value 또는 값의 부재를 나타낼 때 Optional 형식을 사용한다.여기서 말하는 값의 부재는 메모리 할당하지 않은 것을 의미한다.일반적으로 변수의 유형을 Int? 와 같이 물음표를 타입 이름의 후행에 표시한다.Optional는 또 다른 작성 방식입니다.여기서 나오는 Optional.none 은 nil 과 동일합니다.let number: Int? = Optional.som(42)let noNumber = Int? = Optional.none 옵셔널 바인딩과 강제 언래핑의 차이점두 가지 모두 Optional을 언래핑할 때, 조건적으로 할 것인지 강제로 할 것인지의 차이가 있다.Optional Binding 은 Optional 인스턴스의 래핑된 값을 새 변수에 조건부로 바인딩하는 것을 의미..

iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점
Life style/TIL2024. 5. 31. 15:11iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점

Garbage Collection가 뭘까?1950년대 후반에 개발된 Lisp 프로그래밍 언어에서 처음 도입되었다. 이후에 다양한 언어에 영향을 미쳤으며, Java, C# 등에서 사용된다.Java GC는 어때?GC는 힙 메모리를 살펴보고, 사용중인 오브젝트와 사용되지 않는 오브젝트를 식별하고, 사용되지 않는 오브젝트를 삭제하는 프로세스다. 사용 중인 개체 또는 참조된 개체는 프로그램의 일부가 여전히 해당 개체에 대한 포인터를 유지 관리한다는 것을 의미한다. 사용되지 않는 개체 또는 참조되지 않은 개체는 더 이상 프로그램의 어떤 부분에서도 참조하지 않습니다. 따라서 사용하는 메모리를 회수할 수 있다.MarkingGC는 사용 중인 메모리와 사용되지 않는 메모리를 식별합니다.참조된 객체와 참조되지 않는 객체를 ..

[Swift] Reactive Programming Combine - Resource
Language/Swift2024. 5. 29. 22:42[Swift] Reactive Programming Combine - Resource

Resource를 관리할 수 있는 2가지 연산자가 있습니다.sharemulticastshareupstream에서 받은 요소를 여러 subscibers에게 공유하는 Publisher.Share 클래스의 인스턴스입니다.연산자는 반환한 publisher는 여러 subscribers를 지원합니다.subscribers는 publisher로부터 변경되지 않은 요소와 완료 상태를 받습니다. Publisher.Share는 사실상 Publishers.Multicast 와 PassthroughSubject의 조합으로 암시적으로 autoconnect이 포함되어 있습니다. 처음 들어오는 subscriber와 함께 한 번 구독합니다. upstream에서 받은 값을 첫 subscriber 및 이후 구독하는 subscribers에..

쏘카, 은행 앱 기기인증 실패? 해결하기!!
Life style2024. 5. 26. 17:58쏘카, 은행 앱 기기인증 실패? 해결하기!!

왜 문제가 되었는가?아이폰 14 pro를 사용하고 있으며, 수리를 하는 과정에서 초기화된 핸드폰으로 교체가 된 상황입니다.즉, 기존에 사용하던 앱들을 새로 깔아야 하는 상황이죠. 새로운 앱들 설치!!일단 은행앱 같은 경우에는 메시지를 통한 기기인증을 할 때, 실패하게 되면 전화로 인증할 수 있도록 다른 옵션을 제안합니다.하지만 쏘카의 경우에는 오로지 메시지로 기기인증을 해야 하는 문제점이 있습니다. 고객센터 문의를 하려고 해도 해당 시점은 일요일 오후였으며, 전화로 가입 문의로 넘어가더라도 문서로만 가입을 어떻게 해야하는지 알려주거나 챗봇으로 연결하라고 유도합니다. 하지만 챗봇의 경우에도 앱에 로그인조차 못하는 상황인데 연결될 수 없었습니다. 그래서 해결 방법은?기존에 구글링 및 네이버로 검색을 한 결과..

[Swift] Reactive Programming Combine - Debugging
Language/Swift2024. 5. 19. 22:00[Swift] Reactive Programming Combine - Debugging

print모든 publisher 이벤트에 대한 log 메시지를 출력합니다.이벤트가 publisher를 통과하는지 확실하지 않을 때 사용하는 연산자입니다. print에는 TextOutputStream 객체를 받는 매개변수가 있습니다.이를 사용하여 원하는 형태의 로그를 출력할 수 있습니다. class TimeLogger: TextOutputStream { private var previous = Date() private let formatter = NumberFormatter() init() { formatter.maximumFractionDigits = 5 formatter.minimumFractionDigits = 5 } func write(_ string: String) { ..

데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스
Life style/TIL2024. 5. 19. 14:45데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스

데이터베이스는 크게 2가지로 나눌 수 있다.관계형 데이터베이스비관계형 데이터베이스관계형 데이터베이스(RDBMS)데이터를 행과 열로 구성된 2차원 테이블 형태로 저장된다.SQL을 사용하여 데이터를 조작한다.비관계형 데이터베이스(NoSQL)키-값으로 데이터를 저장한다.JSON 등의 문서 형태로 데이터를 저장한다. iOS에서 사용되는 SQLite, Core Data, Realm 등의 특징과 사용 사례Core Data는 관계형 데이터베이스와 객체 지향 프로그래밍을 결합한 것으로 객체-관계 맵핑된다.Entity, Attribute, Relationship로 정의된 스키마로 저장되어 SQL와 유사하게 데이터를 쿼리할 수 있다.데이터는 SQLite 데이터베이스에 저장된다. Swift Data에서는 Core Data와..

image