본문 바로가기

분류 전체보기151

iOS) Push Notification Flow (feat. APNs) iOS Push 흐름도정의 Push (or Remote Notification)서버에서 디바이스로 알람을 전달하는 방법특징 iOS의 경우 Push 기능을 구현하려면 무조건 APNs를 거쳐야 한다.APNs (Apple Push Notification service) 개별 디바이스로 직접적으로 푸시 알림을 보낼수 있는 주체 (provided by Apple) 참고 자료Registering your app with APNs | Apple DeveloperNotification Overview | Apple Developer 2024. 5. 8.
운영체제) 프로세스 동기화와 경쟁 조건 머리말공유 데이터와 데이터의 비일관성(data inconsistency)멀티 스레드 / 멀티 프로세스의 환경에서는 여러 작업을 동시에 실행시키기 때문에, 효율성을 증가시킬 수 있지만, 공유하는 자원에 대한 접근에 주의를 기울여야 한다.concurrent access to shared data may result in data inconsistency.공유 데이터에 대한 비동기적인 접근은 데이터의 비일관성을 유발할 수 있다.본문동시성과 병렬성 (Concurreny & Parallelism)1. 동시성에서의 실행(Concurrent Execution)a process may be interrupted at any point in its instruction stream.하나의 프로세스의 실행 흐름에서 어느 .. 2024. 5. 1.
RxSwift) Hot Observables vs Cold Observables 머리말Observables의 특징 따른 구분 (Hot vs Cold)RxSwift의 Observables의 특징을 구분하여 설명할 때 흔히 Hot과 Cold로 구분하여 이를 다룬다. 아메리카노도 아니고 무슨 Hot과 Cold가...이를 한번 비교해 보자.본문구분의 핵심시퀀스에 대한 방출 시점 (→ 자원의 사용 여부)Observable이 Hot인지 Cold인지 이를 구분하는 핵심은 아래와 같다.Observable이 아이템에 대한 시퀀스를 언제 방출하는가?여기서 짐작할 수 있는 따뜻하냐 차갑냐의 차이는, 이벤트의 방출은 곧 자원의 사용 (이벤트의 방출 → 열을 발생시킨다)의 여부 에서 착안한 것 같다.공식 문서에서도 Use resources ("produce heat") 라 설명되어 있다. .. 2024. 4. 17.
Swift) inout 파라미터 머리말 Swift는 다른 언어와 다르게 함수의 파라미터가 상수여서 파라미터의 값을 변경하려면 "inout"이라는 키워드를 사용해야 한다. 우리말로 하면 "출입"이라는 키워드일텐데 도대체 이 키워드는 무엇인지 살펴 보자. 본문 공식문서의 inout 한번 공식문서에서 inout을 살펴 보자 In-Out Parameters in Functions You write an in-out parameter by placing the inout keyword right before a parameter’s type. An in-out parameter has a value that’s passed in to the function, is modified by the function, and is passed back .. 2024. 4. 10.
알고리즘) 선형 탐색 (Linear Search) in Swift 머리말 정렬이 되지 않은 배열을 효율적으로 탐색하려면? 하버드 대학교 CS50 수업에서 알고리즘에 대한 수업을 할 때 나오는 내용 중 하나가 바로 선형 탐색이다. 이에 대한 블로그는 여기에 정리해 두었다. 본문 이를 한번 Swift 언어의 코드로 구현해 보자. 코드 타입을 명확히 하지 않고 제네릭으로 추상화하였고, 구현에서 이를 실체화하기 위해 메타 타입을 이용했다. import Foundation func linearSearch( array: [T], value: T, type: T.Type ) -> T? { for element in array { if element == value { // 등호를 쓰기 위해 Equatable 프로토콜 채택 return element } } return nil } f.. 2024. 3. 31.
iOS 앱의 생명 주기 (App Life Cycle) Intro 앱의 생명 주기(App Life Cycle)란? 앱의 생명 주기는 어떠한 앱이 최초로 실행된 이후부터 해당 애플리케이션이 메모리에서 해제되어 종료되기까지의 상태와 상태 간의 이동을 의미한다. 앱 생명주기의 변화점 iOS 13.0+ & iPadOS의 스플릿 뷰 기존에는 한번에 하나의 화면만 보여주던 게 당연했지만, 아이패드에서 최소 두 개 이상의 앱을 하나의 화면에서 보여주어야 할 필요성이 생겼다. 그것이 바로 스플릿 뷰의 등장이다. App Delegate → Scene Delegate iOS 12 이전까지는 UIApplicationDelegate 객체를 통해 Life Cycle Event에 대응했지만, iOS 13 이후부터는 UISceneDelegate 객체를 통해 Life Cycle Even.. 2024. 3. 27.
옹알이 (2) (in Swift) | 프로그래머스 코딩테스트 목차 머리말 익숙하지만 못 보던 옹알이 문제가 두 번째가 나왔다. 정답률도 생각보다 낮아서 의아했다. 링크 코딩 테스트 연습 - 옹알이 (2) 본문 풀이 아이디어 - 문제를 보고 스택을 활용하면 좋을 것 같다는 예상이 들었다. - 주어진 단어의 맨오른쪽부터 왼쪽으로 차례로 스택 (타입은 문자열) 으로 담아서 매번 해당 스택이 말할 수 있는 단어인지를 판단했다. (+) 자료구조 스택 스택(Stack)에 관한 블로그는 이곳에 있다. 궁금하다면 여기를 참고하자. 코드 import Foundation struct Nephew { let words = ["aya", "ye", "woo", "ma"] func isWordSpeakble(_ word: String) -> Int { var word = word.map.. 2024. 3. 13.
Git) 필수 자료 모음 목차 Git 1. Git 개념 공식 문서 (a) 웹사이트 https://git-scm.com/ (b) 한글 서적 https://git-scm.com/book/ko/v2 (c) 영문 서적 https://git-scm.com/book/en/v2 2. Git의 동작 과정 How Git Works: Explained in 4 Minutes | ByteByteGo Youtube 3. Git 명령어 (a) Merge vs Rebase Git MERGE vs REBASE: The Definitive Guide | TheModernCoder YouTube Git MERGE vs REBASE: Everything You Need to Know - YouTube(b) git merge의 종류 비교 Git의 다양한 브랜치 .. 2024. 1. 4.
Swift에서타입에 상관없이 코드를 작성할 수 없을까? (feat. Swift Generics) 목차 I. 머리말 들어가기 전에 개발자 앤디는 두 요소를 바꾸는 함수를 작성하기 위해 아래와 같이 코드를 작성하였다. 코드 func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = a a = b b = temporaryA } func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { let temporaryA = a a = b b = temporaryA } 하지만, 앤디는 이렇게 작성하면서 의문점이 들었다. 어차피 두 요소를 바꾸는 함수인데, 하나의 함수로 정의할 수는 없을까? 함수의 중복 동일한 기능을 수행하는 여러 개의 함수 앤디는 타입에 상관없이 함수를 하나로 묶고 싶다... 2024. 1. 2.
프로젝트 경진대회 발표 및 회고 (feat. MVVM-C x Clean Architecture & Git Flow) 머리말 - 네트워크 요청과 응답을 중심으로 한 "라이트 서비스 레벨 프로젝트(LSLP)"의 경진대회를 진행했다. - 여기서 나는 이번에 프로젝트에 처음 적용한 MVVM-C with Clean Architecture와 Git Flow에 대해 발표를 진행했다. 클린 아키텍처 키노트 회고 아키텍처에 치우쳐져 기능은 부족하지 않았는가 프로젝트 초반에 아키텍처에 대한 탐구 및 적용하는데 시간을 많이 소모했다. 반대 급부로 제한된 시간 내에 할 수 있는 기능을 모두 활용하지 못해 아쉬웠다. 그래도 장려상 (4등)을 수상해서 아키텍처 설계 및 Git flow 관리에 높은 점수를 준 멘토님들과 동기들에게 감사함을 느낀다 :) 2023. 12. 22.
반응형