iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항
Life style/TIL2024. 5. 19. 11:35iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항

메모리 캐싱은 왜 필요할까?우선 Caching은 메모리 내에서 자주 액세스하는 데이터를 관리하는 데 사용되는 기술이다. 캐싱을 하면  더 빠른 로드 시간과 네트워크 대기 시간 감소 등 사용자 경험을 향상 시킨다.서버에서 가져와야 하는 데이터를 줄어 들면서 요금 절감 혹은 네트워크 환경이 좋지 못한 사용자에게 도움된다. 메모리 캐싱 기법의 개념과 iOS에서의 구현 방법Cache Hit는 캐시에서 데이터를 읽는 방식으로 제공된다. Cache miss 경우에는 데이터를 가져와 캐시에 저장한다.Cache Hit: 요청된 데이터를 캐시에서 찾을 수 있을 때 발생Cache Miss: 캐시에서 찾을 수 없을 때 발생캐시를 지우는 데에도 전략이 존재한다.LRU: 가장 오랫동안 사용되지 않은 데이터를 캐시에서 삭제LFU..

[Swift] Reactive Programming Combine - Networking
Language/Swift2024. 5. 16. 22:59[Swift] Reactive Programming Combine - Networking

NetworkingCodabletryMap 내에서 JSON 디코딩하면 작동하지만 Combine에서 사용구를 줄이는 도움이 되는 연산자를 제공합니다.dataTaskPublisher(for:)은 튜플을 반환하므로 데이터 부분만 반환하기 위해 map을 사용하고 decode(type:decoder:) 연산자를 사용해야 합니다. tryMap에서 매번 생성하는 것과는 달리 publisher를 설정할 때, JSONDecoder를 한 번만 인스턴스화합니다.let subscription = URLSession.shared .dataTaskPublisher(for: url) .tryMap { data, _ in try JSONDecoder().decode(MyType.self, from: data)..

[Swift] Reactive Programming Combine - 7: Sequence
Language/Swift2024. 5. 16. 14:39[Swift] Reactive Programming Combine - 7: Sequence

Sequence Operatorsminmin 연산자를 사용하면 publisher가 방출한 최소값을 찾을 수 있습니다.최소값을 알기 위해서 publisher가 .finish 완료 이벤트를 보낼 때까지 기다립니다. 값이 Comparable을 준수하지 않는다면 min(by:)를 사용하면 됩니다.enum Rank: Int { case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king}let cards: [Rank] = [.five, .queen, .ace, .eight, .king]cancellable = cards.publisher .min { return $0.rawValue  maxmin..

[Swift] Reactive Programming Combine - 6: Time manipulation
Language/Swift2024. 5. 16. 13:49[Swift] Reactive Programming Combine - 6: Time manipulation

Time Manipulation Operatorsdelay1초마다 값을 방출하는 publisher에서 값을 지연하여 방출할 수 있습니다.let valuesPerSecond = 1.0let delayInSeconds = 1.5let sourcePublisher = PassthroughSubject()let delayedPublisher = sourcePublisher.delay(for: .seconds(delayInSeconds), scheduler: DispatchQueue.main)let subscription = Timer .publish(every: 1.0 / valuesPerSecond, on: .main, in: .common) .autoconnect() .subscribe(sourcePu..

가상 메모리의 개념과 동작 원리
Life style/TIL2024. 5. 13. 13:35가상 메모리의 개념과 동작 원리

Virtual memory 또는 Vitrual storage는 메모리 관리 기법의 하나로 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 주 메모리(RAM)를 모두 소비하고 고갈될 것으로 생각하여 개발하게 되었으며, 디스크의 일부를 가상 메모리로 할당하고 필요한 데이터를 디스크와 RAM 간에 주고 받는 방식으로 개발했다. 가상 메모리는 사용하지 않는 데이터를 RAM에서 디스크로 스왑하고 다른 작업을 위해 RAM을 확보한다.  가상 메모리의 필요성과 장점가상 메모리는 멀티태스킹에 매우 중요한 역할을 한다.컴퓨터가 무거운 프로그램을 둘러싼 메모리 제약에..

렌더링 속도의 향상을 위한 MIP maps: 밉맵
Life style/TIL2024. 5. 13. 10:33렌더링 속도의 향상을 위한 MIP maps: 밉맵

3차원 그래픽스 텍스처 매핑 분야에서 렌더링 속도를 향상시키기 위한 목적으로 기본 텍스처와 이를 연속적으로 미리 축소시킨 텍스처들로 이루어진 비트맵 이미지의 집합이다.  라인터 multium in parvo의 약자로, "많은 것을 작은 공간에 넣음"이라는 뜻이다.32비트 시스템에서 각각의 색이 8비트값으로 이뤄지면 1/4공간이 낭비하게 된다. 미사용 공간을 활용하기 위해 이미지의 1/4 크기의 복사본을 넣으면서 반복하여 넣게 된다. 텍스처 크기가 256x256 픽셀이라고 할 때, 만들어지는 이미지는 128x128, 64x64, 32x32 ... 여덟 개의 이미지로 구성된다.이 텍스처를 40x40 크기로 렌더링할 경우 64x64 크기와 32x32 크기 밉맵 이미지를 적절한 방법으로 보간해서 최종 이미지를 ..

[Swift] Reactive Programming Combine - 5: Combining Operators
Language/Swift2024. 5. 11. 13:18[Swift] Reactive Programming Combine - 5: Combining Operators

Combining Operatorsprepend... synctax를 사용하여 다양한 값(원래 publisher와 동일한 유형)의 목록을 받습니다.let publisher = [3, 4].publisherpublisher .prepend(1, 2) .sink(receiveValue: { print($0) }) .store(in: &subscriptions) // *--- RESULUT ---*// 1// 2// 3// 4 prepend 연산자가 체인 연결을 하는 것은 접두사로 추가한다는 의미입니다.그렇기에 연산자의 순서가 중요합니다.let publisher = [3, 4].publisherpublisher .prepend(1, 2) .prepend(3, 4) .sink(receiveValue..

암호화와 보안의 기본 개념과 iOS 앱 보안을 위한 방안
Life style/TIL2024. 5. 9. 11:59암호화와 보안의 기본 개념과 iOS 앱 보안을 위한 방안

암호화는 정보를 인코딩하는 프로세스이다.암호화에 사용되는 키가 있으며, 키를 통해서 암호문을 생성한다. 암호화된 정보를 사용하기 위해서는 키를 이용하여 암호문을 복호화한다. 암호화는 보안 분야에서 사용되며, 대표적으로는 아래와 같다.데이터 전송 보안: 인터넷 통신데이터 저장 보안인증 및 접근 제어: 인증서, 보안 토큰전자서명블록체인 대칭키 암호화와 비대칭키 암호화의 차이암호화에서 사용되는 키는 두 가지 유형의 키가 사용된다.대칭키비대칭키(공개키)Symmentic-key암호화와 복호화에 사용되는 키, 두 키 사이에는 동일할 수도 있고 간단한 변환이 있을 수도 있다.둘 이상의 당사자 간의 공유하는 키로 양 당사자가 비밀 키에 접근할 수 있어야 한다는 요구 사항은 public-key에 비해 주요 단점이다.그러..

image