본문 바로가기

2022/05

(9)
없는 날짜는 어떻게 표시해야 할까? 서론 우리 가족은 생일에 대해 그리 민감하지 않다. 선물을 챙겨 주거나 파티를 하지도 않고, 그냥 잊고 지나가거나 어쩌다 운이 좋아 그날 알아차린다면 축하한다며 인사 한 마디 하는 게 전부다. 선물을 챙긴다고 해도 받는 사람이 뭘 원하는지, 받아도 실망하지 않을 선물은 무엇인지, 어떻게 하면 기억에 오래 남을지 생일을 챙겨 본 사람이라면 누구나 공감할 골칫거리인데 이게 매년 있다고 생각하면 아주 불편해진다. 문제는 사회생활이란 게 그리 녹록지 않다는 거다. 우리 가족이 아닌 누군가에게는 특별한 날일 수도 있고, 누군가는 나에게 축하받는 것이, 혹은 나를 축하해 주는 것이 특별한 일일 수도 있다. 세상에는 매 년 존재하지 않는 날이 있다. 양력으로는 2월 29일, 음력으로는 2월 30일이다. 실제 생일로 ..
196. Data Validation Data Validation Core Data에 CRUD 되는 상황에서 데이터의 무결성을 유지하기 위해 저장이나 업데이트를 시도하는 데이터의 종류나 형식에 제약을 걸 수 있다. Data Model에서 Inspector를 사용해 간단하게 검증 방식을 설정하고, NSManagedObject를 사용해 검증코드를 구현하는 방식으로 구현한다. Data Model에 검증방식 설정하기 xcdatamodeld > Person Entity > name Attribute Optional 해당 Attribute에 nil을 저장할 수 있도록 하는 속성이다. 비활성화하면 false에 해당하고 nil을 저장할 수 있고, 활성화하면 true에 해당하고 필수 nil을 저장할 수 없어 반드시 입력값이 존재해야 하는 필수 Attribu..
애플워치 시리즈 6 서론 영원한 것은 없다고 했던가, 영영 끝날 것 같지 않았던 코로나도 슬슬 힘이 다하는 것 같다. 운동을 잘 하진 못하지만 좋아하는 하는 사람으로서, 졸업 전 까지는 새벽에 산책을 나가거나 점심이 소화가 되지 않는 날이면 저녁을 거르고 후배와 함께 운동을 나가곤 했다. 덤벨이나 풀업 등의 맨몸 운동은 그렇다 치고, 파트너가 사라지면서 뚝 끊게 된 유산소 운동은 묘한 미련과 함께 항상 마음 한 구석에 자리 잡고 있는 것이었다. 왼쪽 손목에는 대학교 입학때 샀던 시계가 항상 자리하고 있었다. 엄청 대단한 시계는 아니었지만 처음 가지게 된 나만의 시계다. 가는 팔목에 어울리는 꽤나 작은 알을 가지고 있었고, 이후 살이 더 빠지게 된 후 통줄로 감당이 되지 않아 직접 나토 밴드로 교체해 사용하기도 했다. 첫 시..
195. Faulting & Uniquing Faulting iOS 앱에서 DB를 사용하는 경우, 모든 경우에 저장소에 접근해 DB를 CRUD 하는 것이 아니라 Context에 불러 온 뒤 CRUD를 마치고 저장소를 업데이트 하는 방식을 사용한다. 이를 더 세분화 하면 Context에는 데이터 자체가 전달 되는 것이 아닌 정보가 전달되고, 데이터의 원본은 RowCache에 전달된다. 이후 Context에서 실제 데이터에 접근을 시도 하는 경우, Context에 존재하는 정보를 통해 RowCache의 데이터를 불러오게 된다. 이렇게 Context에 저장되는 정보를 Place Holder Object, Managed Object Fault 라고 부르며, 해당 정보를 사용해 RowCahce의 데이터를 불러 오는 과정을 Firing Faults, Fetc..
194. Transformable Transformable 영구 저장소에 저장된 데이터를 TableView에 표시한다. Contact.swift public class Contact: NSObject, NSCoding { @objc public var tel: String @objc public var fax: String @objc public var email: String init(tel: String, fax: String, email: String) { self.tel = tel self.fax = fax self.email = email super.init() } public static func sample() -> Contact { let telStr = String(format: "010-%04d-%04d", Int.ra..
너도 알고 나도 아는 iOS 팁 05 : 애플워치의 나이 확인 문제와 미디어 용량이 가득 참 문제 서론 따로 글을 올리겠지만 얼마 전 애플 워치를 구입했다. 최근 다시 시작한 러닝 때문인데, 염두해 두고 구입했을 터인 아이폰 미니도 러닝 때 걸리적거리기는 마찬가지였기 때문에, 양손 가볍게 나가서 음악을 듣고, 트래킹을 하고, 연락이 가능하길 바랐다. 모든 게 준비됐다고 생각했고 컨디션도 좋았건만 문제가 생겼다. 본론 애플워치의 미디어 용량이 가득 찼다는 메시지가 뜨고, 연령 제한으로 인해 스테이션이나 특정 곡들을 들을 수 없고, 큐레이션 재생 목록 등을 재생하면 애플 뮤직이 튕기는 문제가 있었다. 실질적으로 폰 없이 단독으로 사용하려고 구매한 셀룰러 버전의 애플 워치의 가치가 사라지는 것이다. 이대로는 도대체 사용할 수가 없어서 해결법으로 꼽히는 방법과 실제 해결한 방법 두 가지를 정리해 본다. 초기..
너도 알고 나도 아는 iOS 팁 04 : 왜 아이폰은 사진의 이름을 '날짜'와 '시간'으로 표현하지 않을까? 서론 나야 아이클라우드를 기반으로 모든 사진을 업로드하고, 이를 관리하므로 신경 쓴 적이 없지만, 대부분의 사람들은 아이폰을 직접 연결하거나 파일 자체를 다뤄야 할 일이 반드시 생긴다. 아마도 이런 상황일 테고, 심하면 미리 보기 없이 이름만 주르륵 나열된 상황일지도 모른다. 그럼 이제 슬슬 혈압이 오르기 시작한다. 언제 찍은 사진인지 '이름'만 보고 알 수 있다면 얼마나 좋을까? 우린 언제부터 이런 요행을 기대하기 시작했는지, 왜 사용자들이 원하는데 애플은 'IMG_0002' 같은 코드 방식의 이름을 고집하는지 파헤쳐 보자. 본론 우선 결론만 말 하자면 이건 애플의 똥고집 과는 거리가 조금 멀다는 점이다. 77D로 촬영했던 사진도, GR 3x로 촬영했던 사진도 너무도 당연하게 'IMG_0112' 혹은 ..
어디 우산 놓고 오듯 ‘일말상초’라고 하던가, 한참 심난했을 그 시기에 읽은 시다. 소중했던 사람에게 가졌던 미안한 감정이 느껴져 좋아하는 시라 펜을 잡는 동안에는 심심치 않게 적을 것 같다. ​'ㄷ'과 'ㄹ'의 구분은 원 글을 썼던 2019년에도 그랬고 여전히 어렵고, 일부러 구분 되게 쓰자니 비율이 망가지는 대참사가 일어나곤 한다. 당시 사용하던 Pilot Super 60은 빈티지로 구매했던 펜인데, 애용하던 도중 색(Sack)이 찢어져 더이상 사용할 수 없게 됐다. 마음에 들었던 펜이라 훗날 고쳐 쓸 수 있는 날이 오길... Log 2022.05.06. 블로그 이전으로 인한 글 수정
선형 데이터 구조와 탐색 서론 선형 데이터 구조 자료의 순서를 유일하게 결정할 수 이쓴 구조를 말 한다. 수학적으로 n 번째 자료를 탐색한 다음 n + 1 번째로 탐색할 자료가 유일한 구조다. 시각적으로는 위와 같다. 왼쪽이 n 다음 n + 1 이 유일하므로 선형구조이고, 오른쪽이 n 다음 n + 1 이 복수이므로 비선형구조이다. 형태에서 느껴지듯 주로 리스트와 배열이 이에 해당하고, 조금 더 확장하면 위와 같이 다차원의 배열과 리스트도 선형구조에 포함된다. 본론 선형 데이터의 탐색 이러한 선형구조의 데이터를 탐색하는 방법에는 크게 두 가지 방식이 있다. 순차탐색 (Linear Search) 첫번째 자료부터 마지막 자료까지 순차적으로 탐색하는 방식으로, 최종적으로 자료의 수 만큼 탐색하게 된다. 따라서 계산량은 O(n) 이 된다..