일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- struct
- 세종대학교
- 학과별커뮤니티
- snkit
- 프로토콜
- collectionview
- CS
- observable
- mvc
- 반응형
- 라이브러리
- 대표
- 옵셔널
- SwiftUI
- 동시성
- WeatherKit
- 기초문법
- uikit
- 캐시
- ios
- 네트워크
- 실습
- 구름톤 유니브
- swift
- async
- 토이프로젝트
- RxSwift
- Kingfisher
- 스트럭트
- 이론
- Today
- Total
목록전체 글 (115)
스윞한 개발자

안녕하세요! 이번 포스팅에서는 최근 개발을 시작한 SNKit의 개발 첫 번째 이야기를 다뤄보려고 합니다. 첫 번째 글에서는 SNKit의 개발 배경과 전체적인 기획에 대해 살펴보았습니다. 이번 글에서는 SNKit의 핵심 기능인 메모리 캐시와 디스크 캐시의 구현에 대해 자세히 알아보겠습니다. 캐시 시스템 설계 요구사항효율적인 이미지 캐싱 시스템을 구축하기 위해 다음과 같은 설계 요구사항을 구성했습니다!!메모리 효율성: 과도한 메모리 사용 방지하기지속성: 앱 재시작 후에도 필요한 데이터 유지하기만료 관리: 오래된 캐시 항목을 자동으로 정리하기용량 제한: 지정된 용량을 초과하지 않도록 자동으로 관리하기스레드 안전성: 여러 스레드에서 동시에 접근해도 안전하게 동작하도록 관리메타데이터 관리: 이미지 외에도 관련 ..

안녕하세요! 이번 포스팅에서는 DB Transaction / ACID 에 대해 정리해 보겠습니다! DB 트랜잭션(Transaction)과 ACID란?1. DB 트랜잭션이란?우선 정의를 살펴보면,, 데이터베이스(DB)에서 트랜잭션(Transaction)은 여러 데이터베이스 연산이 하나의 논리적 단위로 묶여서 실행되는 일련의 작업들을 말합니다. 트랜잭션은 여러 데이터베이스 작업을 하나의 단위로 처리하여, 데이터의 일관성 및 무결성을 보장합니다.... 이렇게 말하면 감이 잘 안 오실 텐데요! 은행 계좌 간 이체 작업을 예를 들겠습니다. "계좌 A에서 돈을 빼고, 계좌 B에 돈을 넣는" 작업은 둘 다 하나의 트랜잭션(연산단위)으로 묶여야 하며, 한쪽만 실행되고 다른 쪽은 실행되지 않는 경우는 허용되지 않습니다..

안녕하세요! 이번 출시 프로젝트를 시작하기 전 기획 단계에서 캐시 라이브러리를 직접 개발해 보면 어떨까..라는 저의 큰 꿈을 품고..!! 라이브러리를 기획해 보고 배포해 보기로 마음 먹었습니다..!! 처음 배포해 보는 일이기 때문에 어려운 일이 많겠지만.. 잘(?) 한 번 배포해 보겠습니다! 이제부터 이미지 캐싱 라이브러리 SNKit(스윞남킷ㅎㅎ)에 대한 시리즈를 시작하려고 합니다. 이 시리즈에서는 이미지 캐싱 라이브러리를 왜 만들게 되었는지, 어떤 아키텍처로 설계했는지, 그리고 각 모듈의 역할과 구현 방법에 대해 상세히 다룰 예정입니다. SNKit 개발 배경앱을 개발하다 보면 이미지 로딩과 관련된 문제가 자주 발생합니다. 특히 제가 만들었던 애니메이션, 영화 어플 포스터 등 많은 이미지를 다루는 ..

안녕하세요! 이번 포스팅에서는 Hot/Cold Observable과 Multi/UniCast에 대해 정리해보겠습니다. 제가 RxSwift를 공부해보며,,, 하면 할수록 늘 새로운거 같아요! 몰랐던 개념들이 참 많은것 같습니다. 반응형 프로그래밍을 공부하다 보면 꼭 나오는 개념들이 있습니다. 바로 Hot / Cold 그리고 Multicast / Unicast입니다. 오늘은 이 네 가지를 한 번 정리해보려고 합니다! Hot Observable정의구독과 상관없이 이벤트를 방출할 수 있다.생성되자마자 데이터를 흘려보낼 수 있다.새로운 구독자는 이미 지난 이벤트는 보지 못한다. 특징생성 순간부터 시작 (구독 여부 상관없음)Subject가 대표적인 예시let subject = PublishSubject()let ..

안녕하세요! 이번 포스팅에서는 DAO, DTO, Entity + Repository Pattern에 대해서 정의해 보고! 왜? 써야하는지, 어떻게 써야 하는지에 대해 알아보겠습니다. 우선, 1. DAO (Data Access Object)- 데이터베이스나 API같은 데이터 소스를 직접 다루는 객체- 데이터를 읽고 쓰는 구체적인 작업을 담당- 데이터 저장소에 대한 CRUD 작업을 추상화 정리하자면, DAO는 데이터 저장소와 직접적으로 소통하는 레이어입니다. 비즈니스 로직과 저장소의 로직을 분리하여 유지보수에 용이하게 할 수 있습니다. 예를 들어, 자주 사용하는 로컬 저장소인 UserDefaults를 보여드리겠습니다.protocol UserDefaultsDAO { func saveUser(_ us..

안녕하세요! 이번 시간에는 DiffableDatasource에 대해 공부해 보고 정리해 보겠습니다! # DiffableDatasource란?DiffableDatasource는 iOS 13부터 도입된 데이터를 관리하는 최신 방식입니다. UICollectionView, UITableView에서 사용될 수 있습니다. 일반적으로 사용하던 DataSource를 사용하는 방식보다 더 간단하고 효율적인 기능을 제공합니다. https://developer.apple.com/documentation/uikit/uicollectionviewdiffabledatasource-9tqpa UICollectionViewDiffableDataSource | Apple Developer DocumentationThe object ..

안녕하세요! 이번 포스팅에서는 ARC에 대해 정리해 보고 무작정 weak를 쓰던 그 시절... 에서 벗어나 언제 어떤 상황에 써야 하는지 그 예시도 함께 살펴보겠습니다. 오늘 정리할 내용은 ARC! Automatic Reference Counting, 자동 참조 계수입니다. 저도 프로젝트를 진행하면서 강한 참조 약한 참조 많이 사용도 해보았는데요! 언제 어떻게 왜 쓰는지는 정확하게 몰랐습니다! 이번 시간을 통해 더 자세히 제대로 알아보겠습니다! ARC에 대해 알아보기 전에 RC(Reference Count)에 대해서 한번 정리해 보겠습니다. #RC인스턴스를 참조하는가 안 하는가를 숫자로 표현한 것입니다. 컴파일 타임에 언제 참조되고 해제되는지 결정되며, 런타임 때 그대로 실행됩니다. * 장점 : 개..

안녕하세요. 동시성 프로그래밍과 관련해 지난 포스팅에서 GCD, swift Concurrency에 대해 정리해 보았습니다. GCD 내부 코드에서 경쟁 상태를 방지하기 위해 lock, queue 등을 사용해줘야 했는데! 이제는 actor를 통해 대응이 가능해졌습니다. 이번 포스팅에서는 Actor에 대해 톺아보겠습니다! 먼저, 기존의 lock 등을 사용해 경쟁 상태를 관리할 수 있었는데 Actor가 등장하게 된 배경에 대해 간략히 정리해 보겠습니다. NSLock을 사용할 경우에 모든 경우에 개발자가 직접 관리해야 하기 때문에 휴먼 에러가 발생할 가능성이 있습니다. 해제를 깜빡하거나 잘못된 순서로 사용하면 데드락이 발생할 수 있습니다. 아래와 같이 비교해 볼 수 있습니다.수동으로 lock을 관리해야 함act..