- [ 매매법 ][하모닉 패턴] 뱃(Bat) 패턴2025-02-15 18:48:23뱃 패턴 구성요소1. B포인트 - XA 피보나치 0.382 ~ 0.52. C포인트 - AB 피보나치 0.382 ~ 0.8863. D포인트 - XA 피보나치 0.886 PRZ 구성요소 (D포인트라고 이해하면 편함)1. XA 피보나치 0.8862. BC 피보나치 1.618, 2, 2.24, 2.618 중 - 가장 가까운 곳3. AB = CD (1, 1.27, 1.618)
- [ 매매법 ][하모닉 패턴] 가틀리 패턴2025-02-11 22:34:28가틀리 패턴 구성요소1. B포인트 - XA 피보나치 0.6182. C포인트 - AB 피보나치 0.382 ~ 0.8863. D포인트 - XA 피보나치 0.786 PRZ 구성요소 (D포인트라고 이해하면 편함)1. XA 피보나치 0.7862. BC 피보나치 1.13 ~ 1.6183. AB = CD 조건들을 모두 성립하고 D에서 추세 반전을 기대할 수 있다.
- [ TroubleShooting ]isSecureTextEntry 활성화로 인하여 발생하는 입력값 초기화2025-02-10 16:02:14개요textField의 isSecureTextEntry를 활성화해주면 비밀번호와 같이 숨김 처리를 해야하는 정보들이 알아서 가림 처리가 된다.그래서 보통 비밀번호 TextField는 위 프로퍼티를 꼭 활성화시켜주곤 한다. 다만 isSecureTextEntry를 활성화하면, TextField가 resigned된 이 후 다시 response가 발생했을 때 자동으로 입력값을 초기화시켜버린다. 위 영상처럼 해당 텍스트 필드를 벗어난 후 다시 입력할 때 다시금 입력해야하는 불편함이 발생했다.그리고 이게 그렇게 자연스럽게 느껴지지 않는다. 해결 방법솔직히 간단하게 끝날 줄 알았는데, 생각보다 오래걸렸다.private var isEditingDidEnd: Bool = falselet passwordStream = p..
- [ TroubleShooting ][TS] CollectionView.rx.itemSelected가 먹통이 된 이유2025-02-09 11:27:32개요특정 상황에서 CollectionView.rx.itemSelected가 동작하지 않는다.원인커스터마이징한 RootView와 RootViewController를 상속받아 사용하는데, 여기서 나는 해당 뷰에 대한 터치 이벤트를 항상 추가해주기 위해서 view에 tapGesture를 설정했다.이를 상속받은 하위 Custom View와 ViewController에서 tapGesture에 대한 이벤트를 어떻게 처리할지만 정하면 되기 때문에 편리하다.문제는 tapGesture에 cancelsTouchesInView라는 프로퍼티가 존재한다.기본 값은 true이고, 제스처가 인식되면 보류되었던 다른 터치 이벤트들은 전달되지 않고 touchesCancelled 메서드로 메시지가 전달된다고 한다.즉 설정한 tapGes..
- [ Swift ][Swift] Clean Architecture2025-02-09 11:25:57Clean Architecture란소프트웨어(Software)란 제품이 출시되면 변경이 어려운 유형의 하드웨어(Hardware)와 다르게 유연한 변경과 확장이 가능하다.그러나 시스템 아키텍처를 고려하지 않고 만든 소프트웨어는 유연한 변경과 확장이 어렵고 이는 무형임에도 하드웨어와 다를바가 없어진다고 생각한다.이를 위해 나온것이 클린 아키텍처이며(즉, 유연한 변경과 확장이 가능하도록 설계하는 것), 클린 아키텍처는 소프트웨어를 계층으로 분리하여 시스템 구성요소들의 독립성을 강화하고 의존성을 약화하여 그 자체로 언제든 테스트 용이하게 만든다.이는 앞서 말한 소프트웨어의 유연한 변경과 확장을 가능캐한다.계층Swift에서 클린 아키텍처를 적용하면 보통 3가지 레이어로 구분한다.아래에서 말하는 컴포넌트는 각 계층..
- [ Swift ][Swift] Copy On Write2025-02-09 11:20:49Swift에서는 COW 방식이 적용되어있다.Copy On Write는 값 복사가 이루어질 때는 실제 복사가 아닌 값의 메모리주소를 참조하고 있다.그 이후 값 변경이 이루어질 때 실질적인 값 복사가 이루어지진다.그래서 값타입은 값복사가 이루어진다는 말은 반은 맞고, 반은 틀리다.실제로는 복사 후 변경이 있을 때 실질적인 복사가 이루어져 새로운 메모리를 할당하고, 값이 변경된다.
- [ Swift ][Swift] final 키워드와 Dispatch를 통한 성능 향상2025-02-09 11:18:53클래스의 override를 제한하거나 서브클래스가 더 이상 존재하지 않을 때 final 키워드를 사용한다.final을 통해 상속이 더 이상 필요없음을 명시할 수 있을 뿐더러, 런타임 성능이 향상된다.성능 향상은 왜 있을까?swift에는 어떤 메소드를 호출할 것인지를 결정하여 실행하는 메커니즘인 Dispatch라는 개념이 존재한다이 Dispatch는 다시 Static Dispatch와 Dynamic Dispatch로 구분된다.Static Dispatch컴파일 시점에 호출될 함수를 결정하여, 런타임 시 그대로 실행시킨다.이는 컴파일 시점에 이미 결정이 되기 때문에 성능 상 이점이 있다.Dynamic Dispatch런타임 시점에 호출될 함수를 결정하여, 실행시킨다.함수 호출 과정에서 vtable을 통해 간접호..
- [ Swift ][Swift] GCD 요약2025-02-09 11:16:06동시성 프로그래밍여러 작업을 동시에 실행Swift에는 이러한 동시성 프로그래밍을 가능캐 해주는 2가지 기능이 있다.Dispatch QueueOperation QueueGCD(Grand Central Dispatch)Dispatch Queue는 FIFO Queue형태로 작업을 순서대로 전달받는다.Serial / ConcurrentSerial이전 작업이 끝나면 다음 작업을 시작하는 직렬 형태아무런 설정을 하지 않으면 Serial로 동작Concurrent추가된 작업을 동시에 처리Sync / AsyncSync큐에 추가된 작업이 완료될때까지 기다림Async큐에 추가된 작업의 완료를 신경쓰지 않음Main / GlobalMainMain Thread가 해당 작업을 맡음Default는 Serial로 동작하나 Concur..