본문 바로가기

개린이 이야기61

Concurrency에 관하여 코어코어는 CPU의 핵심으로 CPU에서 실제로 일을 처리하는 역할을 수행.한 번에 한 가지 일만 처리할 수 있음멀티 코어는 여러 일을 동시에 처리할 수 있음 그렇다면 싱글 코어에서 여러 작업을 수행못함?동시성이라는 개념을 통해 가능하다.동시성이란 시분할로 여러 작업을 반복적으로 옮겨가며 처리함으로써 동시에 작업이 수행되는 것처럼 보이는 것따라서 싱글 코어에서도 동시성을 이용하여 여러 작업을 동시에 실행할 수 있음 그럼 코어의 갯수가 많으면 많을수록 성능이 훨씬 좋겠네?거의 그렇지만, 백퍼센트는 아님멀티 코어에서는 어떤 코어가 어떤 일을 할 지 작업을 나눠야 하는데, 이 과정에서 딜레이가 발생하여 오히려 싱글 코어보다 작업 속도가 줄어들 수 있음또한 소프트웨어가 싱글 코어에 최적화되었다면, 멀티 코어라도 .. 2024. 7. 28.
면접 후기 07월 18일 어제, 면접을 다녀왔다.어제 바로 글을 쓰면 좋았겠지만.. 싱싱미역 상태라서 글을 쓸 수가 없었다.그래서 오늘이라도 글을 남겨보려고 한다. 채용 절차사전 과제 -> 면접 진행3년차의 공고였고, 나는 신입이지만 자격요건에 어느 정도 부합해서 지원하게 되었다.그리고 감사하게도 사전 과제의 기회를 주셔 열심히 진행하게 되었다.  사전 과제사전 과제는 그리 어렵지 않은, iOS 개발자라면 가장 일반적으로 구현하게 되는 미션이었다.짧은 기간이지만, 나의 모든 역량을 보여주기 위해 노력했다.아키텍처로는 MVVM-C와 Clean Architecture를 사용했다. 이외에도 코드는 일관성있게, 깔끔하게 정리했고, 이해하기 쉽게 주석을 열심히 달아주었다.모든 구현을 마치고 리드미에 사용한 기술과 각 객체의.. 2024. 7. 19.
캐시정책에 관하여 왜 필요한가? - 이전 시간에 이미지 캐싱에 대해 학습했다. (2024.01.18 - [개린이 이야기] - 이미지 캐싱에 관하여) - 이미지 캐싱은 네트워크 요청을 최소화함으로써 사용자 경험을 크게 향상시킨다. 하지만 캐싱으로 인한 메모리 사용량 증가는 시스템 리소스에 부담을 줄 수 있다. 따라서 NSCache나 cachesDirectory의 자동 삭제(auto-eviction)기능에 의존하기보다는, 앱의 상황에 맞는 적절한 캐시 정책을 수립하여 적용하는 것이 중요하다. 캐시 만료 정책 - 각 데이터에 만료일을 설정하고, 정기적으로 만료된 데이터를 제거하는 방법 - KingFisher 라이브러리 코드를 참고하여, 캐시 관리 기능을 구현! 저장할 객체 선언 final class StorageObject {.. 2024. 1. 24.
Downsampling(다운샘플링)에 관하여 - 다운샘플링에 관해 알아 볼 예정으로 이 글을 읽기 전에 "https://developer.apple.com/videos/play/wwdc2018/416/" 를 보는 것을 추천합니다. Downsampling(다운샘플링) - 이미지의 해상도를 줄이는 과정 iOS에서 이미지와 메모리 사용량 - WWDC에 의하면, 이미지의 메모리 사용량은 파일 크기가 아닌 이미지의 dimensions(이미지 너비와 높이)에 있다. 즉, 이미지를 메모리에 로드할 때, 해당 이미지가 차지하는 픽셀의 총량이 메모리 사용량을 결정한다. iOS에서 이미지 처리 단계 1. 로드 단계 - 압축된 JPEG 파일을 메모리로 불러온다. 2. 디코드 단계 - 이미지 파일을 실제 픽셀 데이터로 변환하는 과정이다. ex) JPEG 파일을 GPU가.. 2024. 1. 20.
이미지 캐싱에 관하여 - 이미지 캐싱으로 유명한 라이브러리인 KingFisher가 있다. KingFisher 라이브러리의 코드를 분석해보면서, 이미지 캐싱을 직접 구현해보는 것이 좋을 것 같다고 판단하여 글을 정리해본다. 캐시 메모리와 디스크 메모리 1. 캐시 메모리 - 속도: 매우 빠름, RAM에 저장되어 바로 접근이 가능 - 수명: 앱 실행 중에만 유지되며, 앱이 종료되면 사라짐 - 크기 제한: 일반적으로 제한적, 메모리 부족 시 자동으로 데이터가 제거될 수 있음 2. 디스크 메모리 - 속도: 상대적(캐시 메모리)으로 느림. 파일 시스템에 저장되어 디스크 접근이 필요 - 수명: 앱이 종료되어도 데이터가 유지됨 - 크기 제한: 상대적으로 큰 저장 공간을 가지고 있음 전체 프로세스 1. 캐시 메모리에서 이미지 찾기 - 먼저,.. 2024. 1. 18.
MVVM(Model-View-ViewModel)에 관하여 탄생 배경 대형 프로젝트는 수 십개의 화면, 수만 개의 코드 라인으로 구성될 수 있다. 이런 프로젝트의 복잡성을 관리하지 못하면 코드의 유지보수가 어려워지고, 버그가 발생하기 쉬워진다. 복잡성을 관리하기 위한 방법 중 하나로 패턴이 등장했다. 앱에 역할과 책임을 나누어 기능을 분리하고, 각 기능이 서로에게 미치는 영향을 최소화하고, 각 부분을 독립적으로 유지 관리하고 테스트할 수 있도록 하는 것이다. 최초의 디자인 패턴 중 하나로 MVC 패턴이 등장한다. MVC는 모델, 뷰, 컨트롤러의 세 가지 요소로 앱을 분리하여 코드의 구조를 단순화하고 유지관리를 용이하게 했다. 하지만 MVC에는 단점이 존재한다. 1. Massive ViewController 복잡한 앱에서는 Controller가 방대해지는 경향이 .. 2023. 7. 12.