본문 바로가기

분류 전체보기

(64)
[TIL] Socket 통신 구현 지난번 게시글에서는 Socket에 대해 간단하게 정리해 보았습니다.이번 글에서는 Socket 통신을 직접 구현한 내용에 관해 살펴보겠습니다.구현된 화면은 아래와 같습니다.소켓 구현 설명 소켓으로 구현시 개발자의 역할은 데이터가 적절한 시점에 서버와의 연결시켜주었다가 적절한 시점에 연결을 해제하는 것이 중요합니다. 우선 가장 중요한 Socket을 구성하는 코드부터 살펴보겠습니다.(API는 업비트 API를 사용하였습니다.) WebSocket 연결아래 코드는 Socket을 연결하는 코드입니다.아래 코드를 보시면 URLSession를 default session으로 구성하였는데 그 이유는 Delegate를 통해 WebSocket에 대한 연결 상태에 대해 확인하기 위해서입니다.나머지 코드는 일반적으로 URLSes..
[TIL] Socket에 대한 간단 정리 HTTP vs SocketHTTPHTTP란 Hyper Text Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가집니다. 웹브라우저에서 통신이 일어나며, 초기에는 HTML 파일 정송을 목적으로 만들어졌으나 현재는 JSON, Image, 짧은 Video 등의 다양한 파일 형식을 지원합니다.HTTP 특성HTTP 특성에는 가장 크게 비연결성과 무상태성이라는 두가지 특성을 지닙니다.각각에 대해 간략히 나열해 보겠습니다.비연결성(Connectionless)비연결성이란 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질을 말합니다.비연결성의 장점HTTP 프로토콜이 이러한 특성을 지니게 된 이유는 HTTP는..
[TIL] MapKit 사용해서 위치 자동완성 검색 기능 구현 오늘은 프로젝트 진행 중 Mapkit을 사용해서 위치 자동완성 검색 기능을 구현해본 과정에 대해 포스팅해볼까 합니다.Mapkit우선 Mapkit에 대해 간단히 설명하자면 애플의 기본 지도 앱을 기반으로 지도에 관한 모든 작업을 처리할 수 있게 도와주는 지도 프레임워크입니다. 그리고 이 Mapkit 프레임워크에 오늘 구현할 기능의 핵심적인 역할을 해주는 객체가 바로 MKLocalSearchCompleter입니다. MKLocalSearchCompleter공식 문서에 따르면 이 객체를 통해 쿼리(query)를 보내는 위치 자동완성 검색 기능을 구현할 수 있습니다. 구현자 이제 실제로 구현해보록 하겠습니다.기본적인 UI 구조는 UISearchBar에 검색어가 입력되면 그 결과가 UITableView에서 표시되도..
[TIL] Alamofire 로깅(Logging) 요즘 진행하고 있는 프로젝트에서 Alamofire로 네트워크 디버깅 중인데요. 디버깅을 단순히 print() 구문으로만 진행하다 보니 디버깅 시간이 너무 오래 걸린다는 단점있었습니다. 이러한 단점을 극복하고자 로깅(Logging) 도입하였는데요. 오늘은 이 도입 과정에 대해 작성해보고자 합니다. EventMonitorAlamofire 공식 문서에 따르면 Alamofire 이벤트들에 대한 로깅 기능을 구현하려면 EventMonitor란 프로토콜을 준수해야한다고 합니다. 그렇다면 이 EventMonitor가 무엇이냐? 또, 공시 문서를 살펴보면 아래와 같이 정의되어 있습니다.The EventMonitor protocol allows the observation and inspection of a large ..
[TIL] Combine VS RxSwift 기본 차이Combine과 RxSwift에서 사용되는 개념들을 각각 대응시켜 보겠습니다.우선 RxSwift에서는 Observable - Observer - Operator 가 주요 구성 요소들인 반면Combine에서는 Publisher - Subscriber - Operator 가 주요 구성 요소들입니다. 그리고 RxSwift에서 구독하기 위해 사용되는 subscribe는 Combine에서 sink에 해당합니다.더욱이 RxSwift에서 메모리를 해제하기 위해 사용하는 dispose는 Combine에서 store에 해당합니다. 이제 Subject로 넘어가보겠습니다.RxSwift에서 주로 사용하는 Subject에는 PublishSubject와 BehaviorSubject가 있는데요.이 두 Subject는 Co..
[TIL] Swift Concurrency 등장 배경 GCD vs Swift ConcurrencyGCD현재 Swift에서 동시성 프로그래밍에 가장 많이 사용되고 있는 API입니다. 이 GCD에는 크게 한 번에 하나의 테스크를 순차실행하는 Serial DispatchQueue와 많은 작업을 동시에(concurrent) 실행하게 해주는 Concurrent DispatchQueue라는 두 가지가 존재합니다. Queue라는 이름에서 유추할 수 있듯이 실행되는 순서는 선입선출(First-In First-Out)입니다.Swift ConcurrencyAsync/Await를 필두로 주로 클로저로 이루어저 있는 GCD의 코드 가독성을 향상시키고, 휴먼 에러로 발생할 수 있는 에러 처리를 컴파일 타임(compile time)에 처리하여 에러 처리에 대한 휴먼 에러를 미연에 ..
[TIL] Alamofire을 이용한 Token 갱신 적용 오늘은 Alamofire를 이용한 토큰(Token) 갱신에 대해 작성해보고자 합니다. RequestInterceptorAlamofire을 이용하여 토큰 갱신에 대해 구글링해보면 항상 등장하는 키워드는 RequestInterceptor입니다.Alamofire 공식 문서에 따르면 RequestInterceptor는 RequestAdapter 프로토콜과 RequestRetrier 프로토콜로 이루어진 프로토콜로 Session별 및 Request별 기능을 제공한다고 정의하고 있습니다. 이와 더불어 RequestInterceptor 프로토콜은 모든 네트워크 요청에 ​​공통 헤더가 추가되고 인증(Authentication) 이 만료되면 요청이 재시도되는 인증 시스템이 포함된다고 합니다. 여기서 RequestAdapt..
[TIL] TikTok 피드 구현 과정 소개본격적인 프로젝트에 들어가기 앞서 이번에 TikTok 피드처럼 UI를 구성하기 위해 따로 프로젝트를 만들어 미리 테스트 해본 과정을 소개하는 내용입니다. 참고 강의TikTok UI 에 대한 자료는 아래 강의를 기반으로 진행하였습니다.https://www.youtube.com/watch?v=j1w6Ed5-3tA 구현 과정위 강의 구현한 TikTok 피트 UI는 CollectionView를 이용하였습니다. 이는 CollectionView의 Cell이 TableView Cell보다 Size를 CollectionView Layout 설정을 통해 좀 더 명시적으로 지정해줄 수 있기 때문이라고 생각됩니다. 따라서 기본적으로 CollectionView를 구성해줍니다.  아래 코드는 Collection View를 ..