목록전체 글 (45)
개발콩블로그

안녕하세요 개발콩입니다 !! 😆오늘은 자료구조 Stack에 대해 정리하도록 하겠습니다. Stack한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO, FILO 형식의 자료구조입니다. 우리가 주로 먹는 프링글스 과자를 생각하면 이해하기 쉬울 것 같아요. 우리는 과자를 먹을 때 가장 위에 있는 과자를 먹게되고, 과자를 다시 넣게 된다면 제일 위에 넣게 되죠.즉, 우리는 과자를 꺼낼 때 가장 마지막에 넣었던 과자를 먹게됩니다! Stack의 메서드push스택에 데이터를 추가합니다.pop가장 마지막에 들어온 데이터를 제거합니다.top가장 마지막에 들어온 데이터를 확인합니다. Stack의 시간복잡도pushO(1)popO(1)topO(1) 스택 오버플로우스택에서 사용 가능한 것보다 더 많은 공간을 ..
안녕하세요 개발콩 입니다😆오늘은 자료구조 Array, ArrayList, Linked-List에 대해서 알아보도록 하겠습니다. 우리가 개발을 하며 사용하는 Array, List와 같은 것은 순서를 가지로 일렬로 나열한 원소들의 모임입니다.이러한 것을 구현하는 방법에는 3가지가 있습니다. Array(배열)연속된 메모리 공간에 순차적으로 저장되는 자료구조입니다.즉, 인덱스와 인덱스에 대응하는 데이터들로 이루어진 선형 자료구조입니다. 아래는 C++코드입니다. (C언어로 표현하고 싶었지만 티스토리에는 C언어를 제공하지 않습니다.)int arr[5] = {0}; 우리는 배열을 선언하는 최초 시점에 배열의 크기가 고정됩니다. 우리는 인덱스를 활용하여 임의의 원소의 접근, 수정에 관하여 O(1)의 시간으로 접근..
안녕하세요 개발콩입니다 🙂↕️요즘 Swift Realm을 통해 데이터를 저장하는 것을 공부하고 있는데요..그러다가 트랜잭션에 대한 키워드를 우연히(?) 듣게되어서!! 트랜잭션에 대해 정리해보고자 합니다!! 트랜잭션이란?질의(query)를 하나의 묶음으로 처리해, 만약 중간에 실행이 중단되었을 경우 처음부터 다시 질의를 실행하는 롤백(Rollback)을 수행하고, 오류 없이 실행을 마치면 Commit하는 실행 단위 👉 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 의미합니다. 트랜잭션이 왜 필요할까?DB서버에서 여러 클라이언트가 동시에 접근하거나 데이터를 수정하는 과정에서 오류나 중단이 발생할 수 있습니다.이때 데이터의 일관성이 깨지는 것을 방지하기 위해서 사용하는 것이 트랜잭션입니..

안녕하세요 개발콩😁 입니다!!오늘은 CLLocationManager와 RxSwift를 활용하여위치 권한정보를 처리하는 객체를 만드는 방법에 대해서 소개하려고 합니다. Info.plist 권한 추가 우리는 개발하면서 아래와 같은 것을 생각해야합니다.사용자에게 Data Privacy에 대해 더 많은 통제권을 부여합니다.필요 이상의 정보를 요청하지 않음으로써 사용자와의 신뢰를 구축합니다.원하는 것을 최소화 함으로써 더 나은 사용자 환경을 제공합니다. 즉, 사용자의 위치 데이터가 접근하기 전에 반드시 사용자의 허락을 요청하고사용자가 명확히 이해할 수 있도록 데이터 사용 목적과 이유를 설명해야합니다. 하지만, 우리는 이러한 시스템 권한에 관련하여 사용자가 허용하고 위치 데이터를 활용하는 것 뿐만 아니라앱의 ..

안녕하세요 개발콩입니다 !! 🫛😊오늘은 WMO를 활용한 최적화에 대해 소개하도록 하겠습니다. WMO (Whole Module Optimization)Swift 컴파일러의 최적화 모드 중 하나로 각 파일을 개별적으로 컴파일을 진행 하는 것이 아닌,모듈 내 모든 소스 파일을 한 번에 분석하고 최적화하는 방식입니다. 특히 클래스에서 메소드를 호출할 때 어떤 method가 호출될지 런타임에 결정되고 이것을 Dispatch method라 합니다.이렇게 모든 소스 파일을 한 번에 분석하며 Static으로 동작할 수 있는 것을 변경하여 런타임에서의 이점을 챙기는 것 입니다. 하지만, WMO를 사용하게된다면 연관되어있는 것에 관하여 함께 컴파일을 진행하여method와 property 사용에 관하여 컴파일 시점..

안녕하세요 개발콩입니다!🫛최근에 DiffableDataSource와 RealmSwift를 공부하게 되었습니다!Local Data를 CollectionView에 표현할 때 애니메이션이 있으면 조금 더 사용자에게 UX적으로 좋은 경험을 줄 수 있을 것 같아이 두가지를 함께 시도하게 되었습니다! 하지만 이 둘을 함께 사용하면서 문제가 발생하였고, 앞으로 이 두가지를 동시에 사용할 때 고려하면 좋을 것 같아 글을 남기게됩니다. 문제 상황Realm을 통해 DataSource 배열을 만들어 주었고, 해당 데이터를 사용하여 NSDiffableDataSourceSnapshot을 만들고 업데이트를 진행했습니다.하지만, 특정 데이터를 삭제하던 도중 앱이 크래쉬가 발생했습니다. 원인 분석특정 Cell을 클릭하면 Rea..

안녕하세요! 개발콩입니다. 🧑🏻🌾🫛RxSwift를 처음 배웠을 때에는 단순히 사용만해봤다.. 잘 모르겠다..! 라는 느낌이 강했던 것 같습니다.이번에는 공부를 하면서 조금 더 어떤 원리로 동작하는지.. 어떠한 경우에 사용해야하는지 이유를 찾으며 공부를 하니이제는 그래도 RxSwift를 알고 사용합니다! 라고 말할 수 있을 것 같아요!Custom Observable을 직접 만들어보고 왜 그런지 내부 코드를 확인해보며 공부하는 것은 약간은 어려움이 있지만그래도 조금 더 보람차고 원리를 이해하게 되는 것 같습니다! 오늘은 RxSwift의 Dispose와 관련된 내용을 학습하려고 합니다! Disposable구독중인 Stream을 원하는 시기에 정리할 수 있는 타입입니다. 우리는 subscribe m..
안녕하세요 개발콩입니다 !😊RxSwift와 같은 기술스택은 알고 사용하는 것이 중요한 것 같습니다.오늘은 Cold vs Hot Observable과 Unicast vs Multicast에 대해서 알아보도록 하겠습니다. 구독 시점과 이벤트 방출 시점에 따라 달라지는 것이 Cold-Hot Observable입니다. Cold Observable구독이 발생할 때까지 기다렸다가 이벤트를 방출합니다.처음부터 모든 데이터 stream을 확인할 수 있습니다. 따라서 각 subscriber가 구독을 시작한 시점에 동일한 데이터 stream을 받을 수 있습니다. Cold Observable의 특성을 갖고있는 Observable 타입으로 예시를 확인해보겠습니다.let coldObservable = Observable.ju..