취준(자소서,면접)/프로젝트 정리
-
[클라우드인증] 동기 구조의 패킷의 비동기 프로세스 결합취준(자소서,면접)/프로젝트 정리 2024. 10. 31. 11:09
dispatch_group과 NSOperationQueue는 비동기 작업의 순서 및 동시성을 제어하기 위해 사용되지만, 기능과 용도가 약간 다릅니다. 각각의 차이를 자세히 살펴보겠습니다.1. dispatch_groupdispatch_group은 **GCD(Grand Central Dispatch)**를 기반으로, 여러 비동기 작업을 그룹화하여 작업 완료 여부를 관리하는 방식입니다. 여러 작업을 그룹에 추가한 후, 그룹 내 모든 작업이 완료될 때까지 기다리거나 완료 후 특정 작업을 실행할 수 있습니다.주요 특징동시성 제어가 아니라 작업 완료 확인에 집중합니다. 즉, 여러 작업이 동시에 실행될 수 있고, 모든 작업이 완료될 때까지 대기하거나 완료 후 특정 작업을 실행할 때 사용됩니다.단순한 작업 그룹화에 적..
-
디자인패턴과 아키텍쳐의 차이점취준(자소서,면접)/프로젝트 정리 2024. 10. 22. 10:40
디자인 패턴 (Design Pattern):정의: 소프트웨어 설계 시 반복적으로 발생하는 문제를 해결하기 위해 일반화된 설계 템플릿이나 구체적인 코드 구조를 말합니다.목적: 코드의 재사용성, 가독성, 유지보수성을 높이고, 같은 문제를 반복적으로 해결하는 데 도움이 되는 검증된 설계 방식을 제공하기 위해 사용됩니다.예시: MVC(Model-View-Controller), Singleton, Observer, Factory, Strategy 등.앱 아키텍처 (App Architecture):정의: 앱의 전반적인 구조와 설계 방식으로, 각 모듈이 어떻게 상호작용하는지, 데이터 흐름이 어떻게 이루어지는지를 정의하는 큰 틀의 설계입니다.목적: 시스템의 확장성, 유연성, 유지보수성을 확보하고, 전체 앱의 구조적인 ..
-
[디자인패턴 변환 코드 리팩토링 - 최종 선택 패턴과 그 이유]취준(자소서,면접)/프로젝트 정리 2024. 9. 16. 20:18
가장 중요한점. 기존의 MVC패턴을 "점진적"으로 변환해야 한다 !! [선택 과정]1) 각 아키텍쳐 별 장단점 파악 (Clean Architecture, RIBs, VIPER)2) 기존의 MVC패턴에서 변환하기에 적합한 패턴이어야 한다>> 최종으로 VIPER를 선택함VIPER(최종선택)1. 화면단위 모듈화화면단위로 분리하여 리팩토링할 수 있기 때문에 기존 코드를 크게 수정하지 않고 새로운 구조 도입 가능2. 점진적 변환기존의 ViewController를 VIPER의 View로 변환하고, 비즈니스 로직을 Interactor로 이동시키는 방식으로 점진적이고 부분적인 전환 가능 => 전체적인 구조를 바꿀필요 없음RIBs1. RIBs는 기능 단위의 독립성을 강조하여 각 RIB이 독립적인 모듈로 작동 (부모RIB..
-
[디자인패턴 변환 코드 리팩토링- 클린아키텍쳐가 필요한 이유]취준(자소서,면접)/프로젝트 정리 2024. 8. 19. 10:40
[ MVVM과 클린아키텍쳐의 차이 ] 1. 의존성역전원칙 1) MVVM은 여전히 상위계층인 ViewModel이 하위계층인 Service와 Repository에 직접 의존 API가 변경되면 Service뿐만 아니라 ViewModel도 수정이 필요할 수 있다 [예제1] 종종 요청이 오는 에러코드 세분화를 예제로 살펴보자. * 기존에는 에러코드를 하나로 엮어서 처리함// 1. Model 정의/// 이체한도금액 조회public struct AC4192Q1OutRec: Codable { /// 등록해지구분코드-1.등록2.해지3.변경 - 1 public var RGST_CCLC_SCD: String = "" /// 1회이체한도금액 - 19 public var TM1_T..
-
[디자인패턴 변환 코드 리팩토링 - 도입배경 및 고민사항들]취준(자소서,면접)/프로젝트 정리 2024. 7. 31. 14:01
* 내가 생각해본 도입배경 (MVVM -> RIBs)1. MVVM 패턴을 도입한 이유 * 기존소스의 문제점: VC가 너무 많은 역할을 하고있다. 역할 분리가 하나도 안됨. API호출, 비즈니스로직, UI관련 작업이 전부 들어있음. 주식현재가 ViewController만 4800줄 -> 1) 소스파악: 운영업무는 잘못된 부분을 빠르게 확인해서 로직을 파악해야하는데, 특정 비즈니스로직을 확인하려면 VC를 전부 뒤져야함. 2) 수정범위: 특정 로직에 수정요청이 오면 해당 로직을 사용하는 모든 화면을 찾아서 수정해야함. ex) 주식매매부적합 확인 로직은 주식/elw/rp등 모든 상품매매..
-
[RIBs아키텍쳐를 사용한 코드 리팩토링 - 개념정리(1)]취준(자소서,면접)/프로젝트 정리 2024. 7. 30. 14:08
* 도입 배경:단순하게 데이터 조회 > 뷰에뿌려주는 조회성 화면은 MVVM패턴으로 충분하다.하지만 주문, 이체 등 비즈니스로직이 복잡하게 얽힌 화면들은 MVVM의 ViewModel이 결국 거대해지는 Massive ViewController와의 유사한 문제가 발생...>> Clean Architecture의 필요성 RIBs 아키텍처의 구성 요소Router: 네비게이션과 라우팅 로직을 처리합니다.Interactor: 비즈니스 로직을 담당합니다.Builder: 모든 구성 요소를 조립하고 의존성을 주입합니다.Dependency: 각 모듈 간의 의존성을 정의합니다.Component: Dependency의 구체적인 구현체로, 의존성을 해결합니다.Presenter: 사용자 인터페이스와 상호작용을 담당합니다.View..
-
[MVVM패턴 적용 후기 - 2차 RxSwift를 사용한 신규화면 개발]취준(자소서,면접)/프로젝트 정리 2024. 7. 30. 13:48
요약: 신규화면 개발시 RxSwift를 사용하여 MVVM패턴으로 구현. 기존 Objc의 MVVM한계를 벗어나고자 함. [개발 과정에서 수집한 정보들]신청 화면에서종목정보, 목표금액, 기간 등… input정보를 Model로 정의 (구조체) Subject / Observable로 등록 > ViewModel에서 감지 및 처리 didSet을 통해서 특정 값의 변화를 감지했을 때 해당 값을 바꿔줄 수도 있을 것인데, Observable은 뷰 컨트롤러 단에서 바로 bind 또는 subscribe로 연결할 수 있다는 점에서 RxCocoa와 연동이 간편한 것 같다. [MVVM의 단점]1. iOS의 MVVM패턴에는 표준이 없고 구현하는 사람마다 패턴이 조금씩 다르다.그 중에 Kickstarter에서 사용하는 Inp..
-
[MVVM패턴 적용 후기 - 1차 해외주식예약주문 리팩토링]취준(자소서,면접)/프로젝트 정리 2024. 7. 30. 11:10
요약: 이건 Objective-C의 Massive ViewController를 MVVM으로 변환한 케이스다.하지만 Objc만으로는 완벽한MVVM을 구현하기 어려움. 왜냐면 즉각 감지가 안됨. ** 현재는 KVO를 쓰지 않고 property 변수에 직접 새로 할당, 가져오는 구조 (직접 접근/간접접근 중 직접접근 방식임)completion 블록으로 값이 모두 할당이 되었다는 시그널을 받으면, view에 셋팅하고 있음-> 이러한 과정에 있어서 상태값을 결국 동기화해주는 문제에 직면하게 된다. Action이 일어날 때마다 이를 일일히 업데이트해주기 보다는 묶어서 서로 업데이트하도록 해두면 편하지 않을까? 이러한 점에서 Objective C 의 KVO가 등장. 1. ObjectiveC의 데이터 바인딩- O..