본문 바로가기
OAuth 2.0 OAuth 2.0? OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다 사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 합니다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법 보통 Resource Server는 Access Token을 발급할 때 Refresh Token을 함께 발급. Client는 두 Token을 모두 저장해두고, Resource Server의 API를 호출할 때는 Access Token을 사용. Access Token이 만료되어 401 에러가 발생하면, Client는 보관.. 2022. 3. 16.
ReactorKit 1 ReactorKit? ReactorKit is a framework for a reactive and unidirectional Swift application architecture. ReactorKit 장점 뷰와 리액터로 UI와 비즈니스 로직을 분리 모듈간 결합도가 낮아지고 테스트하기 쉽다. 상태관리 용이 : API를 통해 앱에서 연속적인 페이지 로드할 때 이전 페이지를 기록해놓아야 하듯이, 이전 페이지를 기록하는 상태 컴포넌트가 따로 관리되게끔 설계된 구조 Unidirectional Data Flow 1. View는 Action(사용자 입력 등)을 Reactor에게 전달한다 2. Reactor는 전달받은 Action에 따라 비즈니스 로직을 수행한다. 2-1. mutate() Action 스트림을 M.. 2022. 3. 15.
GoF Design Patterns GoF 디자인 패턴 디자인 패턴 : 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션 GoF의 디자인패턴에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분 Creational Patterns, 생성패턴 생성 패턴은 "인스턴스를 만드는 절차를 추상화"하는 패턴입니다. 생성 패턴에 속하는 패턴들은 객체를 생성하는 방법을 시스템과 분리해줍니다. 생성 패턴에서는 중요한 이슈가 두 가지 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화합니다. 생성 패턴은 이들 클래스의 인스턴스들.. 2022. 3. 14.
Dependency Injection Container & Swinject Dependency Injection Container = DI Container = Dependency Container = IoC Container DI Container란? 의존성 주입을 해줄때는 밖에서 인스턴스를 만들어서 주입하므로 앱의 여러군데에서 주입이 일어난다. => 인스턴스를 만드는 위치가 "분산" 되어있다. Container는 모든 인스턴스를 다 가지고 있어 모두 관리 Container에 앞으로 내가 사용할 모든 인스턴스를 다 만들어서 등록(register) 및 관리 필요한 시점에 Container에게 특정타입의 인스턴스를 달라고 하면 Container가 꺼내준다(resolve) Swinject // example 1 // Service : Animal // Component 1 : Ca.. 2022. 3. 14.
Dependency Injection, 의존성 주입 Dependency, 의존성 위에 그럼 처럼 B 클래스(상위계층)에서 A 클래스(히위계층) 를 내부에 변수로 사용한다 B 클래스(상위계층)는 A 클래스(하위계층)에 의존관계가 생기게 됩니다. => 상위계층은 하위계층에 의존하게 된다 객체가 의존성을 스스로 생성 Dependency Injection, 주입 내부가 아니라 외부에서 객체를 생성해서 넣어주는 것 객체가 의존성을 스스로 생성하고 관리하지 않는다 우리가 객체에 의존성을 주입시킴으로써 의존 관계 역전 법칙으로 의존 관계를 분리 IoC, Inversion of Control, 의존 관계 역전 예를 들어 A 객체에서 B 객체가 필요하다고 할 때(A는 B에 의존), A 클래스에는 B인스턴스를 직접 생성하여 사용할 수 있다 문제는 B의 구현체가 변경되었을 .. 2022. 3. 11.
iOS 메모리 구조 Code 영역 우리가 작성한 소스 코드가 기계어 형태로 저장되어 있다 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. Data 영역 전역 변수, static 변수가 저장된다 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 해제된다. 실행 도중 변수 값이 변경될 수 있으니 Read-Write로 지정된다 Stack 영역 함수 호출 시 함수의 지역변수, 매개변수, 리턴 값 등등이 저장 함수(코드 블록)가 종료되면 저장된 메모리도 해제된다 컴파일 타임에 결정되기 때문에 무한히 할당할 수 없다 Heap 영역 ARC에 의해서 Reference Counting이 관리되는 영역이다. Code, Data, Stack, Heap 중에서 유일하게 런타임에 결정되기.. 2022. 3. 4.