전체 글 453

[HLS] Incorporating Ads into a Playlist

Incorporating Ads into a Playlisthttps://developer.apple.com/documentation/http-live-streaming/incorporating-ads-into-a-playlist플레이리스트에 브랜딩 또는 광고 추가.목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant PlaylistOverview자신의..

[HLS] Adding alternate media to a playlist

Adding alternate media to a playlisthttps://developer.apple.com/documentation/http-live-streaming/adding-alternate-media-to-a-playlist기본 프레젠테이션에 대체가능한 플레이리스트를 지정.목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant Playli..

iOS VIPER 아키텍처 정리

iOS VIPER 아키텍처 정리 VIPER Architecture는 Jeff Gilbert와 Conrad Stoll이 클린 아키텍처를 iOS 앱 개발에 특별하게 적용하기 위해서 개발하고 대중화해당 포스팅에서는 Protocol 기반으로 작성 - 개인적으로는 enum으로 이벤트 전달하는게 익숙한데, 프로토콜 기반도 연습하고자 함. 예제 파일VIRER란?ViewViewController로 xib/storyboardInteractor:데이터, 네트워킹 및 비즈니스 로직을 담당.PresenterView와 Interactor 사이에 데이터를 전달하고, 사용자 이벤트를 처리하여 라우터를 호출.VIPER의 다른 모든 객체들과 통신하는 유일한 객체Entity데이터 객체이며 데이터 접근은 Interactor에서 가능VI..

iOS 빌드 메시지 분석해서 빌드 시간 개선하기

iOS 빌드 메시지 분석해서 빌드 시간 개선하기 프로젝트 빌드 메시지를 분석해서 빌드 시간 개선해보고자 함. 예제 파일목차빌드 메시지 확인하는 방법프로젝트 구조 및 Home Package 확인하기1차 문제 분석 및 개선 방향성 잡기Player Package 확인하기Player Package 개선하기1차 개선 결과2차 문제 분석 및 개선 방향성 잡기문제 코드 영역 확인하기HomeDetail을 HomeDetailInterface 모듈로 분리하기개선한 Home Package2차 개선 결과실행 가능한 앱(데모 앱) 구성하기실행 가능한 앱(데모 앱) 빌드 결과결과 한눈에 확인하기1차 개선2차 개선앱 빌드 빌드 메시지 확인하는 방법좌측 인스펙터에 빨간색 이미지 영역 클릭 빌드 이미지를 보면 순차대로 어떤 것들이 ..

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기 테스트 코드를 작성하면서 언어에서 제공하는 기본 값을 그대로 사용하는 경우해당 값이 테스트에 영향을 주는 값인지혹은 단순히 기본값인지 다른 개발자가 판단하기 어려운 경우가 많음.이는 결국 가독성과 유지보수에 문제를 일으킬 수도 있음. 목차Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우Model 과 ViewModel의 구현체 확인테스트 코드에 Dummy 값을 명시적으로 사용한 경우 Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우아래처럼 테스트코드가 작성되어 있다면, 테스트가 올바르게 작성되었다고 생각하기보다 코드를 볼수록 많는 의문점들이 생겨남많은 의문점들은 테스트 본질이 아닌 부..

iOS Combine을 활용해 로그인 상태 관리 기능 구현

iOS Combine을 활용해 로그인 상태 관리 기능 구현 멀티캐스트 딜리게이트 패턴을 활용해 구현했던 코드를 개선하고자 함.멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 : https://rldd.tistory.com/706Combine을 활용해 로그인 상태 관리 기능 구현 : https://rldd.tistory.com/707  목차아이디어데모 샘플 구현 코드Combine 기반 기능 모듈 구현로그인 기능 구현체사용 예제구현 후 분석아이디어이전에 키보드 상태를 감지하기 위해서 Combine을 활용한 적이 있었는데, 이번에도 해당 형태로 구현하면 별도의 주입 없이 더 간편하게 사용할 수 있다고 생각  데모 샘플 구현 코드 (Combine 기반 기능 모듈 구현)멀티캐스트 딜리게이트 패턴을 Com..

iOS 멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현

iOS 멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 멀티캐스트 패턴을 활용해 로그인 기능을 구현 멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 : https://rldd.tistory.com/706Combine을 활용해 로그인 상태 관리 기능 구현 : https://rldd.tistory.com/707   목차배경고려사항데모 샘플 구현 코드멀티캐스트 기능 구현 모듈로그인 기능 구현체이벤트 수신(사용 예제)구현 후 분석 배경 앱 내에서 카카오, 네이버, 페이스북 등 여러 소셜 로그인을 지원하고 있음.로그인이 되지 않은 상태에서도 로그인 페이지가 나타나는 것이 아닌, 각 페이지마다 별도의 정책이 적용되며 다른 UI가 나타남.웹뷰, 웹 등 로그아웃 버튼이 아니더라도 로그아웃 처리시킬 수..

계약에 의한 설계

계약에 의한 설계 느낀점부록 A인데 계약에 의한 설계를 읽어보면서 프레임워크나 라이브러리를 내부를 어떻게 구현하고, 외부에 어떤 인터페이스들을 어떻게 제공하면 좋은지 더 생각하는 부록이었음.  계약에 의한 설계인터페이스를 다듬고 명령과 쿼리를 분리했다고 하더라도 명령으로 인해 발생하는 부수효과를 명확하게 표현하는 데는 한계가 존재주석으로 부수효과를 설명하는 것도 가능하겠으나, 파급효과를 명확하게 전달하기가 쉽지 않을 뿐더러 시간이 흐를수록 구현을 정확하게 반영하지 못할 가능성도 높음메서드의 구현이 단순하다면 부수효과를 쉽게 이해할 수 있을지도 모르지만, 부수효과를 가진 다수의 메서드들을 연이어 호출하는 코드를 분석하는 경우에는 실행결과를 예측하기 어려울 수 있음명령의 부수효과를 쉽고 명확하게 표현할 수 ..

오브젝트: 코드로 이해하는 객체지향 설계 나아가기를 읽으며

오브젝트: 코드로 이해하는 객체지향 설계 나아가기를 읽으며 느낀점패턴에 대해서 더 상세히 알게 되었음. 컴포넌트 재사용과 합성이 이상적으로는 좋지만 현실에서는 아쉬웠다는 포인트에서 합성은 정말 좋은 방법이지만 모든 문제를 이 형태로 강제하여 해결하려는 건 어렵다고 생각하게 되었음  나아가기새로운 기술을 학습하기 위해서는 3가지 단계를 거침따라하는 수준적합한 열 가지 절차가 있더라도 모든 절차를 한번에 습득하는건 불가하여 한 가지 절차를 학습하고 그대로 모방분리 수준단 하나의 절차만으로는 모든 문제를 해결할 수 없는 사실을 깨닫고 다양한 절차를 학습하고 트레이드오프 함.모든 경우에 올바른 절차란 존재하지 않는다는 사실을 이해하고 각 상황에 따라 판단력과 유연함을 익힘.거침없는 수준이제 절차는 중요하지 않은..

오브젝트: 코드로 이해하는 객체지향 설계 15장을 읽으며

오브젝트: 코드로 이해하는 객체지향 설계 15장을 읽으며 느낀점패턴에 대해서 더 상세히 알게 되었음. 컴포넌트 재사용과 합성이 이상적으로는 좋지만 현실에서는 실패했다는 이야기에서 내 코드에서도 일부는 일관성있는 구조를 시간 및 여러가지 사유로 어긴 케이스가 있어서 이에 대한 근거를 찾으려고 마련하게 되었던 것 같음.  디자인 패턴과  프레임워크소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부름디자인 패턴의 목적은 설계를 재사용하는 것디자인 패턴을 익히고 나면 변경의 방향과 주기를 이해하는 것만으로도 필요한 역할과 책임, 역할들의 협력 방식을 순간적으로 떠올릴 수 있음프레임워크는 설계와 코드를 함께 재사용하기 위한 것프레임워크는 아키텍처를 구현..