- [ 매매법 ][하모닉 패턴] 뱃(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..
- [ Computer Science ][CS] Transaction2025-02-09 11:09:25Transaction이란?Transaction은 질의(query)를 통해 데이터베이스의 상태를 변화시키는 수행의 작업 단위를 뜻한다.Transaction는 하나의 질의어(SQL)가 아닌 사용자의 기준에 따라 여러 질의어 작업을 하나로 묶은 실행 유닛이다.데이터베이스 관리 시스템(DBMS)의 성능은 초당 트랜잭션의 실행 수로 측정된다.ACIDDB Transaction이 안전하게 수행되는 것을 보장하는 4가지 성질Atomicity(원자성)원자성은 트랜잭션이 데이터베이스에 모두 반영되거나, 반영되지 않아야 하는 것을 말한다.이는 트랜잭션이 부분적으로 실행되거나 중단되지 않는 것을 보장한다.중간에 문제가 생길 경우 이전 commit 내용 상태로 rollback한다.다만, 확실한 경우 트랜잭션 중간에 세이브포인트..
- [ Computer Science ][CS] 네트워크 7계층2025-02-09 11:08:20네트워크 7계층OSI 7계층OSI 7계층은 국제 표준화 기구 ISO(International Standardization Organization)에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델이다.통신이 이루어지는 과정을 7단계로 나누고 각 계층 간 상호 작동하는 방식을 정해둔 것 이미지 출처 - http://wiki.hash.kr/index.php/OSI_7계층각 계층은 서로 독립적으로 구성되어 있고, 각 계층은 하위 계층의 기능을 이용하여 상위 계층에 기능을 제공한다.네트워크 통신 시 데이터는 각 계층을 지나며 하위 계층은 상위 계층으로부터 온 정보를 데이터 취급하고, 자기 계층의 특성을 담은 제어 정보를 헤더화시켜 붙이는 과정이 발생하는데 ..
- [ Computer Science ][CS] TCP/IP 5계층2025-02-08 17:38:47TCP/IP 5계층TCP/IP 5계층이란?OSI 7 Layer가 데이터 통신 과정을 7개 계층(Layer)로 분류한 이론적인 모델이면, TCP/IP 5계층은 데이터 통신에 실질적으로 사용되는 프로토콜 스택이다. 근래 4계층에서 5계층으로 바뀌었다고 한다.TCP/IP(suite of protocols that specify communications standards)는 프로토콜 모음을 계층화했다는 의미라고 한다. 근데 왜 이름이 약자가 아니라 TCP와 IP를 묶어서 칭하나 했더니 프로토콜 모음들 중 가장 대표적인 프로토콜(중심적인)이라 그렇게 이름 붙여졌다고 한다.TCP/IP 계층 별 특징Application Layer프로그램 구현체(응용 프로그램)과 사용자 인터페이스를 의미한다.OS 제공하는 4 L A..
- [ UIKit ][UIKit] Hugging Priority&Compression Resistance Priority2025-02-08 17:36:07문제상황네이버 웹툰 메인 페이지 UI를 따라만들어 보던 중에, 작가명과 작품 평점을 스택으로 묶어서 관리하였더니 위 사진처럼 앞에 작품 평점이 ...으로 간략화되거나 작가명이 ...으로 간략화되는 문제가 발생했다.해당 스택의 distribution(분포)를 Fill로 설정하였고 너비가 이미지 너비만큼으로 고정되어있다보니 랜덤으로 우선순위가 적용되는 듯 하였다.이에 해당 스택에 포함된 레이블들의 우선순위를 정해줘야 했다. 내가 원하는 우선 순위는 작품 평점 레이블 >> 작가명 레이블로 작품 평점을 무조건 보이도록 하려고 했다.문제해결size inspector에는 이를 해결할 수 있는 수단이 존재하는데바로 Content Hugging Priority와 Content Compresstion Resistance..