@Heebeom Kim
#All#ios#ci/cd#architecture#swift#design pattern#dev

WKWebView! Where is my session cookie?

WKWebView를 다루면서 가장 많은 시간을 투자하는 부분이 와 관련된 것이었다. 이번에 새로운 프로젝트를 진행하면서도 역시나 마찬가지로 세션 쿠키와 관련된 문제가 꾸준히 있었다. 웹뷰의 동작은 단순하지만 생각치못한 단순한 문제들로 인해 많은 시행착오를 겪게 된다. 의도치 않은 리로드가 되기도 하고 세션 쿠키가 사라져서 자주 로그인 페이지로 리다이렉트…

Spring Boot CI/CD (with Docker & Jenkins)

흐름 따라 CI/CD 구성하기 GitHub + Jenkins + AWS EC2 (+ Docker Hub) Hello Application (Local) Code -> Push -> GitHub(GitLab, BitBucket, …) GitHub Webhook -> Jenkins (Master) Jenkins (Master, AWS EC2 Containe…

iOS Clean Architecture with TDD #2. Entities & Use Cases

이번엔 지난 포스트에서 생성한 MovieBook 프로젝트에서 다른 계층의 영향을 받지 않는 을 개발할 것이다. 추후 과정은 외부 영향도가 적은 부터 순으로 진행한다. 의존성을 가진 계층을 먼저 개발하게 되면 명확하지 않은 의존 객체의 명세에 의해서 불필요한 변경이 생겨날 수 있다. 준비 Cocoapods을 이용해 우리가 사용할 라이브러리를 추가할 것이다.…

iOS Clean Architecture with TDD #1. Concept & Structure

아키텍처를 위해 투쟁하라. — Robert C. Martin의 클린 아키텍처 중 소프트웨어와 아키텍처 소프트웨어software라는 단어에 나타나듯이 과 이라는 의미를 가진 것이 소프트웨어이다. 소프트웨어를 만드는 이유는 행위(기능)를 쉽게 변경할 수 있도록 하기 위해서다. 기억해야 할 것은 소프트웨어의 첫 번째 가치가 라면 두 번째 가치는 이다. 사용자…

Meet async/await in Swift

스위프트로 개발하면 많은 비동기 코드를 다루게 되지만, 클로저나 Completion Handler로 구성된 API들이 다루기 까다로운 것은 사실이다. 특히나 로직이 조금 복잡해지거나 에러 처리가 필요한 시점이 되면 문제가 발생한다. 이러한 이유로 스위프트 5.5에도 코루틴 모델이 도입되었다. 함수 자체를 비동기로 선언할 수 있고, 프로퍼티도 비동기 접근이…

방문자 패턴 (Visitor Pattern in Swift)

방문자 패턴 알고리즘과 데이터 모델을 분리시켜서 할 수 있도록 하는 행동 디자인 패턴이다. 구조 구체 타입의 인스턴스를 인자로 받을 수 있는 함수를 선언한다. 오버로딩을 지원하는 언어라면 동일한 이름을 가질 수 있지만, 매개변수의 타입은 달라야 한다. 구체 방문자 클래스는 를 구현한다. 방문자 인스턴스에 대한 accepting 메서드를 정의한다. 인터페…

템플릿 메서드 패턴 (Template Method Pattern in Swift)

템플릿 메서드 패턴 알고리즘의 과정을 추상화하여 상위 클래스로 정의하고, 행동 패턴이다. Doc 포맷의 파일을 입력으로 받아 데이터 분석을 하는 애플리케이션을 만들었다고 하자. Doc 포맷만 지원했던 초기 버전에 CSV, PDF 포맷 또한 지원해야 하는 상황이 되었다. 기존의 클래스를 변경하지 않은 체 새로운 포맷에 대한 클래스를 추가하면 이처럼 구현할…

전략 패턴 (Strategy Pattern in Swift)

전략 패턴 전략 패턴은 하고, 하게 만드는 행동 디자인 패턴이다. 길찾기 알고리즘은 교통수단과 비용, 시간이라는 변수값에 따라 전략이 달라진다. 전략 패턴을 사용한다면 아래처럼 각 변수값에 따른 알고리즘을 개별적인 클래스로 분리하게 될 것이다. 구조 전략을 가진 객체이다. 구체 전략들이 가지는 공통 메서드를 정의한다. 각기 다른 알고리즘으로 구현된, …

상태 패턴 (State Pattern in Swift)

상태 패턴 객체 행동 디자인 패턴이다. 상태 패턴은 과도 밀접한 관련이 있다. 주요 아이디어는, 어떤 순간에도 는 것에서 출발한다. 각 상태에 따라 프로그램은 동일하게 동작할 수도, 다르게 동작할 수도 있다. 그리고 하나의 상태에서 다른 상태로 바뀌는 ‘전환’ 규칙도 유한하고 미리 정해져 있다. 이 개념을 문서 객체에 적용하면 아래처럼 된다. 문서는…

옵저버 패턴 (Observer Pattern in Swift)

옵저버 패턴 특정 객체에서 발생하는 이다. 구독자는 여러 객체가 될 수 있다. 옵저버의 핵심은 나에게 필요한 정보를 내가 매번 확인하는 것이 아니라, 정보 생산자에게 알려달라고 부탁하는 것이다.  옵저버 패턴에서는 우리가 관심이 있는 대상을 라고도 하지만 상태변화에 대한 정보를 다른 객체들에게 전달하기 때문에 라고도 부른다. 발행자의 상태 변화를 추적하는…