iOS

    Alamofire 기능 정리<img src=">

    Alamofire 기능 정리

    Alamofire는 Swift 기반 HTTP 네트워킹 라이브러리로 URLSession을 래핑하여 네트워킹 코드를 쉽고 가독성 좋게 사용할 수 있는 다양한 기능들을 제공합니다.URLSession 기반 코드의 문제점기본적으로 Foundation에서 제공하는 URLSession을 직접 사용할 경우 다음과 같은 단점들이 존재했습니다.요청(Request)을 구성하는 코드가 장황하며, 가독성이 떨어짐반복되는 코드가 발생함(ex: 헤더 설정, 에러 핸들링, JSON 디코딩 등)네트워크 요청을 디버깅하거나 로그를 남기려면 기존 코드에 많은 수정이 필요아래 예시 코드는 HTTP 요청을 통해 User 정보를 가져오는 간단한 예시입니다.단순한 GET 요청임에도 불구하고, 에러 처리, 디코딩 등 코드가 복잡해집니다.guard..

    테스트 가능한 오디오 관리 객체 설계하기

    테스트 가능한 오디오 관리 객체 설계하기

    문제소리가 정상적으로 입, 출력되는지 테스트하기 위해선 오디오 인터페이스부터 기타까지 실제로 연결해야만 테스트 할 수 있는 환경이었고, 그 결과 비효율적인 작업이 반복되었습니다.원인 분석AudioManager가 너무 많은 역할을 하다보니 필연적으로 코드가 길어지게 되었습니다.mark 주석으로 역할을 구분해두었지만 함수 내에서 다른 함수를 호출할 수 있어 사이드 이펙트 발생 위험이 존재했습니다.또한 실제 장치를 연결하지 않고 테스트할 수 없는 환경이었습니다.final class AudioManager { static let shared = AudioManager() private var cancellables = Set() // 사용 가능한 입력 장치 목록 var availableIn..

    AVFAudio - AVAudioSession

    AVFAudio - AVAudioSession

    AVFAudio AVFAudio는 재생, 녹음, 오디오 처리와 같이 앱에서 시스템 오디오 동작을 구성할 때 사용하는 프레임워크 입니다.아래와 같이 다양한 클래스들이 존재하는데, 오늘은 AVAudioSeesion에 대해 학습해보려고 합니다. AVAudioSessionAn audio session acts as an intermediary between your app and the operating system — and, in turn, the underlying audio hardware. You use an audio session to communicate to the operating system the general nature of your app’s audio without detailing..

    MVC, MVVM, Clean Architecture 정리

    MVC, MVVM, Clean Architecture 정리

    iOS에서 자주 사용되는 아키텍쳐 패턴들에 대해 어렴풋이 알고 있던 지식들을 정리하고, 부족한 부분들을 학습하기 위해 작성한 글로 개인적인 생각이 많이 포함되어 있습니다.틀린 내용이나 지적할만한 부분은 댓글로 남겨주시면 감사하겠습니다! 아키텍쳐 패턴이 필요한 이유 혼자서 개발할 땐 코드를 어떻게 짜든 크게 문제되지 않는다.하지만 회사를 비롯해 여러 사람들과 함께 대규모 어플리케이션을 개발하다보면 비효율이 발생하고 이는 생산성 저하로 이어질 것이다.팀원마다 코드 작성 방식이 다르다면 일관성 없는 코드 구조가 될 가능성이 높고, UI와 비즈니스 로직이 강하게 결합된 코드가 작성될 우려도 있다. 일관성 없는 코드 구조는 어떤 문제가 발생할까?남이 작성한 코드를 수정하기 위해서 어디를 고쳐야할 지 찾기 위해 많..

    nohup 명령어를 사용해도 서버가 꺼지는 문제

    nohup 명령어를 사용해도 서버가 꺼지는 문제

    리눅스 환경에서 서버를 백그라운드에서 실행시켜놓기 위해 nohup 명령어를 사용했다.하지만 자꾸 서버가 꺼지는 문제가 발생했고, 그럴 때마다 수동으로 다시 실행시켜주었다.하지만 이대로면 불침번을 서가며 서버를 켜야할 것 같아 문제 해결에 나섰다.Vapor 가 문제?가장 먼저 의심했던건 애석하게도 Vapor 프레임워크였다.분명 Node.js 서버를 nohup node main.js & 명령어를 통해 백그라운드에서 실행해두었을 땐 멀쩡했는데, Vapor 서버로 바꾸고 나서부터 이런 일이 발생했다고 생각해 Vapor를 의심했다.하지만 구글링도 해보고 vapor run 명령어에 관련 옵션이 있는지 문서도 찾아보았지만 별다른게 없었다.터미널 강제종료그 다음 의심한건 나의 터미널이다.다시 서버를 구동시키기 위해 터..

    Tuist 없이 모듈 만들기 with DemoApp

    Tuist 없이 모듈 만들기 with DemoApp

    모듈화는 Tuist가 있어야만 할 수 있을까요? 그렇지 않습니다. Tuist나 XCodeGen 과 같은 모듈화를 도와주는 도구들도 코드나 yml을 아래에서 설명할 형태로 바꿔주는 것이에요ㅎㅎ 그렇기 때문에 도구 없이도 모듈화를 할 수 있어야합니다. Tuist없이 모듈을 하나 만들어보겠습니다. 현재 모듈 구조는 아래와 같습니다. 여기서 TestFeature 라는 모듈을 하나 만들어 볼거에요.File - New - Project 를 눌러줍니다.그리고 Framework(Dynamic Framework)를 골라줍니다.모듈명을 설정하고Add to, Group을 xcworkspace 를 지정해 워크스페이스에 들어가도록 설정하고 create를 눌러 모듈을 생성합니다.짜잔 모듈이 생겼어요.이 헤더 파일을 objc와 브..