본문 바로가기

분류 전체보기

(426)
[iOS] [Swift] RxSwift Observable & Observer, Disposable Observable & Observer, Disposable 이번 시간에는 RxSwift의 기초를 보다 자세히 알아보도록 하겠습니다. 1. Observable & Observer Observable 은 이름에서 알 수 있듯, 관찰가능한 상태를 유지하며 Event를 전달합니다. 해당 Event를 Observer 관찰자에게 전달하고 이벤트를 전달받으면 이를 Observer 에서 처리합니다. 이러한 행위를 Rx에서는 구독(Subscribe) 한다고 표현하기에 Observer 를 "구독자" 라고도 부릅니다. 요즘 매우 많이 사용하는 Youtube 서비스에 빗대어 표현하자면 크리에이터가 Observable 역할을 하여 영상(이벤트)를 발행하고 해당 크리에이터를 구독하던 Observer 구독자가 영상을 시청하는 흐..
[iOS] Blur Effect in iOS Blur Effect in iOS 아이폰을 사용하다 보면 심심치 않게 Blur 효과를 확인하실 수 있습니다. 이번에는 Blur 효과 적용방법에 대해 간단히 알아보도록 하겠습니다. Setting 앱의 배경화면으로 이용할 이미지 Asset을 프로젝트에 넣어준 뒤 아래와 같이 기본 셋팅을 진행합니다. // 이미지 생성 private let imageView: UIImageView = { let imageView = UIImageView(image: UIImage(named: "background")) imageView.contentmode = .scaleAspectFill imageView.clipsToBounds = true return imageView }() override func viewDidLoad..
LLVM (Low-Level-Virtual-Machine) LLVM(Low Level Virtual Machine) 최근 LLVM 이라는 키워드에 대하여 관심을 갖게되었던 계기가 있었습니다. 오늘은 평소에 들어는 봤으나 몰랐던 LLVM에 대하여 간단하게 이게 무엇이며 어떠한 역할을 하는지 살펴보도록 하겠습니다. LLVM 은 오픈소스 컴파일러 개발용 종합 패키지라고 합니다. 이름에는 Virtual Machine이 들어가 있으나 실제로는 가상 머신과는 거의 관련이 없이 그냥 프로젝트 이름이라고 합니다. GCC 등의 기존 컴파일러들의 경우, 컴파일 과정 내부에서 코드의 파싱, 파스 트리, 기계어 변환, 코드 최적화 등 명확한 구분 없이 모놀리하게 설계되어있습니다. 이 말은 곧, 유지보수가 쉽지 않다는 의미입니다. 이러한 고질적 문제들을 해결하기 위해 LLVM 이 탄생..
[Algorithm] [Python&Swift] BOJ/백준 - 5567 _ 결혼식 5567 - 결혼식 문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m ≤ 10000)이 주어진다. 다음 줄부터 m개 줄에는 친구 관계 ai bi가 주어진다. (1 ≤ ai < bi ≤ n) ai와 bi가 친구라는 뜻이며, bi와 ai도 친구관계이다. 출력 첫째 줄에 상근이의 결혼식에 초대하는 동기의 수..
[iOS] [Swift] Moya - Networking Library Moya - Networking Library 이번 시간에는 추상화 네트워킹 라이브러리 Moya에 대하여 알아보도록 하겠습니다. Moya 라이브러리는 urlSession, Alamofire를 한 번 더 감싼 통신 API입니다. Moya를 사용하면 아래와 같이 깔끔한 네트워크 레이어 구성이 가능합니다. Moya는 열거형을 이용하여 타입이 안전한 방식으로 네트워크 요청을 캡슐화하여 사용하는 것에 초점이 맞추어져 있습니다. Provider : Moya의 MoyaProvider는 모든 네트워크 서비스와 상호작용시 사용할 주요 객체입니다. 이를 초기화 할 때 Moya Target을 가지는 일반적인 객체입니다. Target : Moya Target은 일반적으로 전체 API를 의미하며 TargetType 프로토콜을 ..
[iOS] [Swift] setNeedsLayout & layoutIfNeeded setNeedsLayout & layoutIfNeeded 여태 portrait landscape 등 디바이스의 Orientation을 변경하는 등 제약조건에 따른 UI 업데이트를 위해 막연하게만 사용했던 두 메소드에 대하여 한번 알아보도록 하겠습니다. View의 생명 주기중 view layout을 업데이트는 layoutSubViews()가 담당합니다. iOS에서는 앱이 실행되면 메인 스레드에서 Main run loop 가 실행되면서 update 사이클을 통해 이벤트들을 처리하게 됩니다. Update Cycle Update Cycle은 애플리케이션이 유저로부터 받은 이벤트들에 대한 핸들링을 진행한 이후 다시 main run loop로 권한 및 컨트롤을 반환하는 지점입니다. 해당 지점에서 우리의 앱은 Vie..
[iOS] [Swift] Protocol Oriented Programming POP (Protocol - Oriented - Programming) 안녕하세요 오늘은 Swift 언어의 큰 특징 중 하나인 POP 에 대하여 알아보겠습니다. 프로토콜 지향 프로그래밍 (Protocol - Oriented - Programming) Swift 언어를 공부하다보면 관련 문서 혹은 서적에서 한번쯤은 접했던 POP가 과연 무엇일까요? 객체 지향 프로그래밍 패러다임에 기반을 둔 언어들은 클래스의 상속 을 사용하여 해당 타입이 가질 공통적인 기능들을 모듈화하여 구현합니다. Swift에서는 대표적으로 UIViewController가 클래스 타입으로 정의되어 있죠. UIViewController 가 클래스로 정의되어 있기에 모든 ViewController에서 행할 수 있는 행동들을 공통적으로 갖게되..
[Algorithm] [Python] 백준/BOJ - 7562 _ 나이트의 이동 7562 - 나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있다. 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. 출력 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다..