본문 바로가기

분류 전체보기

(97)
[Swift] Local Notification을 이용하여 유저에게 알림 보내기 Local Notifcation이란 무엇일까? Local Notifcation(이하 로컬 알림)은 앱 내부에서 생성한 특정 메시지를 전달 유저에게 전달하는 알림이며, 사용자의 관심을 끄는 방법 중의 하나이다. 알림이 도착하면 App Icon의 뱃지에 특정 문자열을 표기할 수 있으며, 이러한 알림들을 알림 센터에 남길 수 있다. 로컬 알림의 가장 큰 특징은 정해진 시점, 정해진 위치, 정해진 시간 간격에 맞게 미리 알림을 Custom해 두고, 그 상황이 실제로 일어나면 알림이 유저에게 전달된다는 것이다. 따라서 시점이 언제가 될지 알 수 없고, 내용을 미리 작성해 둘 수 없는 경우에는 APNs(애플 푸시 알림 서비스)와 같은 Remote Notifcation을 이용해야 한다. 본격적으로 유저에게 알림의 권..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (4편 - EventLogger로 통신 결과 확인하기) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (3편 - body, queryBody, requestPlain, Multipart 구현) 3편까지는 다양한 request 타입이나 task의 종류에 따른 대응을 하는 과정이었습니다. 이번 편에서는 개발 과정에서 Network 통신의 상태를 편하게 확인할 수 있도록 하는 EventLogger를 제작해 보겠습니다. EventMonitor 프로..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (3편 - body, queryBody, requestPlain, Multipart 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) 지난 2편까지는 Alamofire를 Moya처럼 사용하기 위한 Foundation을 설계하고, VC에서 Service에 존재하는 싱글턴 객체를 이용하여 Post 통신 메서드를 직접 호출까지 해보았습니다. 이번 편에서는 다양한 request 타입 또는 메서드에 대응하기 위해 코드를 조금 수정해 보겠습니다. RequestParams 열거형 Refactoring HttpBody, Query 등등 다양한 리퀘스트 타입에 대응하기 위해 열..
[Algorithm] 해시 테이블의 개념, 성질, 해시 함수의 생성 방법 및 충돌의 해결 Hash Table이란? 해시 테이블은 해시 함수를 통해 키가 저장될 자리를 키의 값으로 결정하는 자료구조이다. 특정 키를 검색, 삽입, 삭제하기 위해 사용할 수 있는 자료구조로 리스트, 검색 트리 등을 사용할 수 있는데, 해시 테이블은 여기에 걸리는 시간을 최대한 단축하고자 만들어진 자료구조이다. 검색, 삽입, 삭제 작업에 배열을 이용한다면 평균 Θ(n) 시간이 걸리고, 일반적인 검색 트리를 이용하면 평균 Θ(log n), 최악의 경우 Θ(n) 시간이 걸린다. 그리고 균형 이진 검색 트리를 사용하면 최악의 경우에도 Θ(log n)을 보장 받을 수 있다. 이러한 자료구조도 좋은 성능을 낼 수 있지만, 더한 효율을 내기 위해서 만들어진 것이 해시테이블인 것이다. 해시 테이블의 기본적인 아이디어는, 앞선 자..
[Algorithm] 균형 검색 트리의 대표적인 예시, AVL Tree란 무엇일까? AVL Tree를 이루는 노드와 Tree의 수선 방법 균형 검색 트리란? 이진 검색 트리에서 검색, 삽입, 삭제의 평균 시간은 Θ(log n) 시간인데, 균형이 잘 맞지 않는 경우에는 최대 Θ(n)의 시간이 될 수 있다. 따라서 이진 검색 트리의 균형이 잘 맞을 수 있게 특정 성질들을 정의해준 것이 균형 이진 검색 트리이다. 이러한 균형 이진 검색 트리에는 AVL 트리와 RB(레드-블랙) 트리가 있는데, 이진 검색 트리에 균형을 맞춰주는 균형 이진 검색 트리 외에도 균형 다진 검색 트리 또한 존재한다. 균형 다진 검색 트리의 대표로는 B-트리가 있다. AVL(균형 검색 트리)란? AVL 트리는 이진 검색 트리가 항상 균형을 유지하도록 한 균형 이진 검색 트리 중의 하나이다. 이진 검색 트리의 검색, 삽입, 삭제의 속도는 트리의 height와 강하게 연관되어..
[Algorithm] 그래프 기본 개념과 그래프 탐색(BFS, DFS) Graph란 무엇일까? Graph는 일련의 노드(node, vertex, 정점) 집합 V와 엣지(edge, 간선) 집합 E로 구성된 자료구조이다. 보통 정점에는 Data가 들어가고, 간선은 그 Data들 간의 관계를 표현한다. 그래서 G = (V, E) 와 같이 표현할 수 있다. 간선으로 연결된 두 정점은 관계가 있다고 말할 수 있으며, 이를 인접(Adjacent)하다고 한다. Graph의 종류 무향 그래프 간선에 방향이 없는 그래프로, 가장 기본적인 형태의 그래프이다. 가중 그래프 간선에 가중치가 존재하는 그래프로, 거리나 친밀도 등 수치 등 관계의 수치를 표현할 수 있다. 방향 그래프(유향 그래프) 간선에 방향이 존재하는 그래프 가중 방향 그래프 간선에 방향과 가중치가 모두 존재하는 그래프 Graph..
[Java] Java의 Collection FrameWork, List - Map - Set, 간단히 보기! Java Collection FrameWork의 기본 구조 Java Collection FrameWork를 사용하는 이유? 많은 수의 데이터를 처리하기 위해서, 가장 기본적인 방법으로 배열을 사용할 수 있다. 그러나 배열은, 크기를 자유롭게 늘릴 수 없으며 삽입, 삭제에 오랜 시간이 걸리기 때문에 이와 같은 일들을 효율적으로 처리하기 위해 동적 배열 개념인 컬렉션 프레임워크가 제공된다. 컬렉션 프레임워크의 종류의 대표격으로 List, Map, Set이 있는데, 이들 인터페이스를 구분하는 가장 큰 차이점은 순서 또는 데이터의 중복 여부이다. 각각의 기능과 장단점을 알아보자. List List는 가장 기본적인 인터페이스로, 각 원소들에 순서가 존재하며 같은 데이터가 중복되어 들어갈 수 있다. 공통적 특징 순..
[Swift] Notification Center 개념 Notification Center 개발자 문서 A notification dispatch mechanism that enables the broadcast of information to registered observers. 등록된 Observers에 정보의 전달을 허용하는 notification dispatch mechanism이다. class NotificationCenter : NSObject 모든 객체들은 addObserver메서드를 이용하여 알림들(NSNotifcation Objects)을 받기 위해 notification center에 Observer로 등록할 수 있다. 객체를 observer로 등록하면, 그것이 받아야 하는 알림에 따라 구분된다. 그래서 하나의 객체에 여러 개의 다른 알림..
[iOS] AppDelegate.Swift는 무슨 역할을 하는 것일까? AppDelegate Appdelegate.swift에서 발견할 수 있는 AppDelegate 클래스는 아래와 같이 정의되어 있다. @main class AppDelegate: UIResponder, UIApplicationDelegate 설명 Your app delegate object manages your app’s shared behaviors. The app delegate is effectively the root object of your app, and it works in conjunction with UIApplication to manage some interactions with the system. 먼저 app delegate라는 용어를 하나 알아야 한다. app delegate는..
[Swift] Coordinator Pattern 기본!! With RayWanderlich Tutorial! Coordinator가 무엇일까? Coordinator A type to coordinate with the view controller. coordinate는 배열하다, 조정하다 정도의 의미를 가지고 있다. Coordinator는 뷰 컨트롤러의 움직임을 조정하기 위한 타입이라고 하는데, 무슨 역할을 하는 것일까? Coordinator Pattern 스위프트에서 코디네이터에 관한 글들을 읽어 보면 아래와 같은 문제를 해결하기 위해 제시된 패턴이라는 정보를 찾아볼 수 있다. Massive View Controller의 문제점 기존 화면전환 방식에 존재하던 VC간의 수평적인 관계 또는 강한 결합의 문제점 코디네이터는 위의 두 가지 문제점을 해결하기 위해 화면전환을 관리하는 독립적인 클래스를 이용하자는 아이디..