분류 전체보기
-
[iOS] status code가 200일 때 빈 응답이 들어오는 경우공부/iOS 2024. 2. 17. 15:04
배경 Alamofire로 빈 타입으로 파싱을 시도하던 중에 오류가 발생했다. 응답은 status code는 200으로 들어오고 body가 비어있었는데, responseDecodable에서 "Empty"로 파싱을 시도했지만 inputDataNilOrZeroLength 오류가 발생했다. 해결법 해결법은 간단하게도 emptyResponseCodes 파라미터만 추가하면 됩니다. emptyResponseCodes에 성공시킬 응답코드를 담은 배열을 추가해주면 오류가 해결됩니다. func requestVerificationCode(email: String, completion: @escaping (Result) -> Void) { let urlString = "http://localhost:8080/member/se..
-
유니온 파인드: Union-Find(Disjoint Set)알고리즘관련/공부하기 2024. 1. 31. 19:00
Union-find? 그래프 알고리즘의 일종으로 상호 배타적 집합(Disjoint Set)이라고도 합니다. 즉 서로 공통되는 원소가 없는 집합이 없게 만들어야 한다는 것이죠. 이를 위해 두가지의 연산이 존재합니다. - Find: X가 속한 대표값을 반환합니다. (트리 형태로 구현하기에 여기선 root 노드를 의미) - Union: X가 속한 집합과 Y가 속한 집합을 합칩니다. 즉 합집합 연산을 의미합니다. 기본 구성 var parent = Array(0...100) func find(_ num: Int) -> Int { if parent[num] == num { return num } return find(parent[num]) } func union(_ a: Int, _ b: Int) { let a ..
-
[programmers][1차]셔틀버스.swift알고리즘관련/문제풀이 2024. 1. 30. 22:05
코딩테스트 연습 2018 KAKAO BLIND RECRUITMENT [1차] 셔틀버스 https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 문제 이해에 꽤나 애를 먹었다. 설명이 좀 난해하게 작성되어있어 잘못 이해한채로 풀다보니 삽질을 오래했던 문제이다. 결과적으로 구현은 쉬웠지만 실제 시험장에서 마주했더라면 손도 못댔을 것 같다. 이 문제를 풀기 위해선 문제의 핵심인 "셔틀을 타고 사무실로 갈 수 있는 도착 시각 중 제일 늦은 시각"을 ..
-
[iOS]텍스트필드가 등장할 때 타임아웃 뜨는 버그 해결법공부/iOS 2024. 1. 17. 17:35
짜증나는 버그 iOS17 버전으로 개발을 위해 Xcode를 업데이트 한 이후로 갑자기 위의 버그가 등장했다. 간혹가다 락이 걸려 앱 자체가 동작하지 않을 때도 있어 개발에 어려움이 있었다... [UIKeyboardTaskQueue lockWhenReadyForMainThread] timeout waiting for task on queue Error for queryMetaDataSync: 2 [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID 도대체 정체가 뭘까? 찾아보는데 나 뿐안 아니라 많은 사람들이 이 버그에 고통받고 있었다 ..
-
키체인을 활용해 jwt Token 안전하게 저장하기공부/iOS 2024. 1. 16. 16:27
Keychain(키체인) 간단 소개: 키체인은 iOS에서 사용할 수 있는 secure 저장소입니다. 흔히 사용하게되는 UserDefaults의 경우 plist 파일에 저장되기 때문에 비밀번호, 신용카드 번호 암호화 키 등의 민감한 데이터를 저장해선 안됩니다. 키체인에 접근하기 위해선 디바이스의 비밀번호를 통해 보호되기에 사용자만 키체인에 저장된 데이터에 접근할 수 있습니다. Keychain에 사용되는 데이터 보호 방식: 키체인은 AES-256-GCM 암호화 알고리즘을 사용하여 데이터를 암호화하며, Secure Enclave와 같은 하드웨어 보안 모듈을 활용하여 데이터를 안전하게 저장합니다. 키체인은 파일 시스템에 저장되어 있는 SQLite 데이터베이스로 구현되어 있습니다. identifier나 group..
-
[회고] UICollectionView를 사용하면서 겪었던 실수Etc/기타 2024. 1. 10. 17:49
으아아 Tag 형태의 Bar를 다 만들고 나서 실수인걸 알아차렸다... 🥲 여기서 상단의 Tag 형태의 느낌으로 카테고리를 선택할 수 있는 메뉴바를 개발하려 했었다. 생각은 되게 단순하게 접근했다. -> 상단에 여러개의 버튼이 가로로 스크롤 되면 좋겠다! -> Scroll or Collection view를 써야겠다! -> 버튼의 크기를 자유롭게 조절하려면 Collection view가 좋겠징? -> Collection View의 각 Cell을 Button으로 감싸야겠다. 그렇게 버튼으로 된 Cell을 만들어서 구현했다.. 뭔가 되게 삐걱거리는 버튼이고, UI 변경이나 스크롤이 이상하게도 잘 안되다보니 하드 코딩을 통해 강제로 되게 만들었다. 그러다 우연히 CollectionView에 대해 작성된 다른 ..
-
Xcode15에서 XCTest를 할 때 Testing... 에서 멈추는 현상공부/iOS 2024. 1. 2. 18:38
# 소개 🐮 Xcode에서 Unit Test를 수행할 때 너무 오래 걸리거나 멈추는 현상이 있었습니다. 단순히 테스트를 오래하는 것이 아닌, 빌드 자체는 1초 미만이었으나 테스트에 너무 많은 시간이 소요되는 문제입니다. # 해결 과정 ⛴️ 테스트를 한번 하려고 하면 너무 시간이 오래걸려 이상하다 생각했습니다. 코드를 잘못 작성했는줄 알고 이리저리 수정하며 삽질했는데 야곰 아카데미에 관련 예제가 있더군요. https://yagom.net/courses/unit-test-%ec%9e%91%ec%84%b1%ed%95%98%ea%b8%b0/ Unit Test 작성하기 - 야곰닷넷 Unit Test 작성하기 테스트를 작성하면 좋다는 말을 많이 들어보셨을 것 같습니다. 하지만 막상 테스트를 작성해보려고 […] ya..
-
UIKit에서 Delegate Pattern를 쓰는 이유공부/iOS 2023. 12. 21. 14:38
# 시작하기 전... UIKit을 처음 접했을 때 가장 당황했던 것은 호출하지 않고도 실행되는 함수였습니다. 무슨 소리인가? 싶겠지만 정말 func 로 구현은 되어있는데 어디에도 호출은 하지 않았지만 분명 그 코드는 동작하고 있었던 것이죠. 그 미스테리의 정체는 오늘 알아볼 Delegate입니다. # Delegate란? Delegate를 직역하면 위임자란 뜻입니다. (이걸 처음 봤을 때 나의 심정) 도대체 무슨 소리인가 싶고, 설명도 잘 이해가 되지 않죠... 뭔가 위임자라고 하면 뭔가 대신 일을 처리해주는 종속된 관계가 아닐까 생각했다. 하지만 정 반대로 일종의 Delegate를 채택하는 쪽이 팀장님, 요청하는 쪽이 직원에 가깝습니다. Delegate를 생성하는 과정을 비유를 섞어 설명해볼게요. 1. ..