분류 전체보기
-
Swift // https://school.programmers.co.kr/learn/courses/30/lessons/49189 import Foundation func bfs(n: Int, graph: [Int: [Int: Int]], beginnigNode: Int, visit: (_ node: Int, _ distance: Int) -> Void) { var queue = [(Int, Int)]() var visited = [Bool](repeating: false, count: n) queue.append((beginnigNode, 0)) visited[beginnigNode - 1] = true while !queue.isEmpty { let (visitingNode, distance) = q..
BFSSwift // https://school.programmers.co.kr/learn/courses/30/lessons/49189 import Foundation func bfs(n: Int, graph: [Int: [Int: Int]], beginnigNode: Int, visit: (_ node: Int, _ distance: Int) -> Void) { var queue = [(Int, Int)]() var visited = [Bool](repeating: false, count: n) queue.append((beginnigNode, 0)) visited[beginnigNode - 1] = true while !queue.isEmpty { let (visitingNode, distance) = q..
2023.08.03 -
some - opaque type 특정 프로토콜을 준수하는 것을 나타내는 불투명 유형을 만들기 위해 프로토콜과 함께 사용된다. 불투명 유형의 기본 유형은 변수 scope 내에서 하나로 고정되어야 합니다. 같은 구체 타입의 새로운 인스턴스를 변수에 할당하는 것도 금지되어 있습니다. 배열이나 리턴타입에서도 하나의 구체 타입으로 고정되어야 합니다. any - existential type Existential Type (Existentials, 실존타입, 실존유형) protocol과 associated type을 이용하여 특정 바운더리로 제약시키는 방법 Swift 5.7부터 실존 타입에는 any를 쓰는 것이 필수다. 왜냐하면 실존타입을 사용하는 것이 동적 타입 결정으로 인한 성능 저하를 불러올 수 있음에도 너..
some, anysome - opaque type 특정 프로토콜을 준수하는 것을 나타내는 불투명 유형을 만들기 위해 프로토콜과 함께 사용된다. 불투명 유형의 기본 유형은 변수 scope 내에서 하나로 고정되어야 합니다. 같은 구체 타입의 새로운 인스턴스를 변수에 할당하는 것도 금지되어 있습니다. 배열이나 리턴타입에서도 하나의 구체 타입으로 고정되어야 합니다. any - existential type Existential Type (Existentials, 실존타입, 실존유형) protocol과 associated type을 이용하여 특정 바운더리로 제약시키는 방법 Swift 5.7부터 실존 타입에는 any를 쓰는 것이 필수다. 왜냐하면 실존타입을 사용하는 것이 동적 타입 결정으로 인한 성능 저하를 불러올 수 있음에도 너..
2023.07.25 -
RunLoop란 소켓, 파일, 키보드 마우스 등의 입력 소스와 타이머를 처리하는 이벤트 처리 루프. 타이머는 입력이 아니지만 특별한 타입이며 타이머 이벤트가 발생해도 RunLoop가 리턴되지 않는다. 모든 Thread는 RunLoop를 가질 수 있고 RunLoop.current를 통해 접근될 때 생성되고 실행도 직접시켜줘야 한다. 단 Main Thread는 애플리케이션이 실행될 때 자동으로 RunLoop를 생성하고 실행하며 이를 Main RunLoop라고 한다. RunLoop 클래스는 일반적으로 스레드에 안전하지 않으므로 현재 스레드의 컨텍스트 내에서만 메서드를 호출해야 한다. RunLoop는 한 번 실행되면 이벤트를 가져와서, 이에 대한 핸들러를 수행하고 대기상태에 들어간다. 계속해서 이벤트를 처리하려..
RunLoopRunLoop란 소켓, 파일, 키보드 마우스 등의 입력 소스와 타이머를 처리하는 이벤트 처리 루프. 타이머는 입력이 아니지만 특별한 타입이며 타이머 이벤트가 발생해도 RunLoop가 리턴되지 않는다. 모든 Thread는 RunLoop를 가질 수 있고 RunLoop.current를 통해 접근될 때 생성되고 실행도 직접시켜줘야 한다. 단 Main Thread는 애플리케이션이 실행될 때 자동으로 RunLoop를 생성하고 실행하며 이를 Main RunLoop라고 한다. RunLoop 클래스는 일반적으로 스레드에 안전하지 않으므로 현재 스레드의 컨텍스트 내에서만 메서드를 호출해야 한다. RunLoop는 한 번 실행되면 이벤트를 가져와서, 이에 대한 핸들러를 수행하고 대기상태에 들어간다. 계속해서 이벤트를 처리하려..
2023.07.25 -
UIView 컨텐츠를 보여주고 사용자가 인터랙션할 수 있는 사각형 틀을 제공하는 기본 UI 컴포넌트 Auto Layout API 제공 CALayer의 delegate이자 래퍼, 컨텐츠의 드로잉과 애니메이션을 CALayer에 위임 draw(_:) 메소드가 CPU의 메인스레드에서 동작 UIResponder의 서브클래스이므로 responder chain내에서 터치나 제스처 이벤트 핸들링 가능 Accessibility 지원 CALayer UIView의 기반을 제공하지만 CALayer만으로 UI를 구현할 수는 없다. 컨텐츠를 캡처하여 비트맵으로 backing store에 캐싱 GPU를 사용하여 렌더링 -> 고주사율의 부드러운 애니메이션 가능 UIView보다 성능이 좋아서 복잡한 애니메이션이나 퍼포먼스가 요구되는 ..
UIView와 CALayerUIView 컨텐츠를 보여주고 사용자가 인터랙션할 수 있는 사각형 틀을 제공하는 기본 UI 컴포넌트 Auto Layout API 제공 CALayer의 delegate이자 래퍼, 컨텐츠의 드로잉과 애니메이션을 CALayer에 위임 draw(_:) 메소드가 CPU의 메인스레드에서 동작 UIResponder의 서브클래스이므로 responder chain내에서 터치나 제스처 이벤트 핸들링 가능 Accessibility 지원 CALayer UIView의 기반을 제공하지만 CALayer만으로 UI를 구현할 수는 없다. 컨텐츠를 캡처하여 비트맵으로 backing store에 캐싱 GPU를 사용하여 렌더링 -> 고주사율의 부드러운 애니메이션 가능 UIView보다 성능이 좋아서 복잡한 애니메이션이나 퍼포먼스가 요구되는 ..
2023.07.21 -
UIView가 생성되면 아래 3단계를 거치는데, 이 3단계는 단방향으로만 일어나는 것이 아니라 특정 단계가 이전 단계나 전체 단계를 다시 트리거링 할 수 있다. 한 사이클이 1/60초에 실행된다. 각 단계의 메소드들은 main run loop의 마지막 부분인 update cycle에서 호출되므로 직접 호출해서는 안된다. Update step - updateConstraints() 하는 일: 시스템이 view에 필요한 constraint들을 계산하고 설정 호출시점 시스템이 자동으로 호출하는 경우: view hierarchy에서 bottom-up 순으로 호출 constraint 활성화/비활성화 constraint 값, 우선순위 변경 view를 view hierarchy에서 삭제 명시적으로 호출을 요청하는 방..
Auto Layout 라이프사이클 한눈에 볼 수 있게 정리하기UIView가 생성되면 아래 3단계를 거치는데, 이 3단계는 단방향으로만 일어나는 것이 아니라 특정 단계가 이전 단계나 전체 단계를 다시 트리거링 할 수 있다. 한 사이클이 1/60초에 실행된다. 각 단계의 메소드들은 main run loop의 마지막 부분인 update cycle에서 호출되므로 직접 호출해서는 안된다. Update step - updateConstraints() 하는 일: 시스템이 view에 필요한 constraint들을 계산하고 설정 호출시점 시스템이 자동으로 호출하는 경우: view hierarchy에서 bottom-up 순으로 호출 constraint 활성화/비활성화 constraint 값, 우선순위 변경 view를 view hierarchy에서 삭제 명시적으로 호출을 요청하는 방..
2023.07.21 -
Swift 개발자라면 한 번 쯤 봤을법한 아래 영상을 리마인드할 겸 다시 리뷰하던 중 이런 궁금증이 생겼다. https://developer.apple.com/videos/play/wwdc2016/416/ Understanding Swift Performance - WWDC16 - Videos - Apple Developer In this advanced session, find out how structs, classes, protocols, and generics are implemented in Swift. Learn about their relative... developer.apple.com "protocol을 채택하지 않는 struct도 3word가 넘으면 데이터가 heap에 저장될까?" 사실..
protocol을 채택하지 않는 struct도 3word가 넘으면 데이터가 heap에 저장될까?Swift 개발자라면 한 번 쯤 봤을법한 아래 영상을 리마인드할 겸 다시 리뷰하던 중 이런 궁금증이 생겼다. https://developer.apple.com/videos/play/wwdc2016/416/ Understanding Swift Performance - WWDC16 - Videos - Apple Developer In this advanced session, find out how structs, classes, protocols, and generics are implemented in Swift. Learn about their relative... developer.apple.com "protocol을 채택하지 않는 struct도 3word가 넘으면 데이터가 heap에 저장될까?" 사실..
2023.07.19 -
1. GameplayKit으로 상태표시UI 쉽게 만들기 - 노수진/네이버웹툰 https://www.slideshare.net/mobile/soojinro9/gameplaykit-ui GameplayKit으로 상태표시 UI 쉽게 만들기 복잡한 절차적인 코드를 정리할 수 있는 GameplayKit의 상태 머신을 사용해봅시다. www.slideshare.net GameplayKit은 게임에서 주로 사용하는 알고리즘 같은 것들을 제공함 GameplayKit에서 State Machine을 제공하고 UIKit과 함께 써도됨 GKState와 GKStateMachine [BP] GKState를 상속받은 공통의 상태를 만들어서 각각의 스테이트가 상속 받도록 하면 중복코드를 줄이고 코드관리하는데 용이하다. 음성인식 버튼과..
LetSwift in 판교 2차 후기1. GameplayKit으로 상태표시UI 쉽게 만들기 - 노수진/네이버웹툰 https://www.slideshare.net/mobile/soojinro9/gameplaykit-ui GameplayKit으로 상태표시 UI 쉽게 만들기 복잡한 절차적인 코드를 정리할 수 있는 GameplayKit의 상태 머신을 사용해봅시다. www.slideshare.net GameplayKit은 게임에서 주로 사용하는 알고리즘 같은 것들을 제공함 GameplayKit에서 State Machine을 제공하고 UIKit과 함께 써도됨 GKState와 GKStateMachine [BP] GKState를 상속받은 공통의 상태를 만들어서 각각의 스테이트가 상속 받도록 하면 중복코드를 줄이고 코드관리하는데 용이하다. 음성인식 버튼과..
2020.01.16 -
https://amara.org/ko/videos/0AtjY87egE3m/url/1216370/?tab=video Robert C. Martin - Clean Architecture and Design | Amara Robert C. Martin - Clean Architecture and Design | Amara amara.org Summary Rails 프레임워크로 애플리케이션을 작성하면 디렉토리 구조가 항상 동일하게 만들어진다. 프레임워크가 얼마나 중요하길래 최상위 디렉터리 구조를 결정지어 버리는 걸까? The Web is a delivery mechanism! (I/O Channel) 웹 자체는 아키텍처적으로 중요하지 않다. 단지 데이터 전달 채널일 뿐이다. 웹 어플리케이션을 작성한다는 말은 이..
Robert C. Martin의 Architecturehttps://amara.org/ko/videos/0AtjY87egE3m/url/1216370/?tab=video Robert C. Martin - Clean Architecture and Design | Amara Robert C. Martin - Clean Architecture and Design | Amara amara.org Summary Rails 프레임워크로 애플리케이션을 작성하면 디렉토리 구조가 항상 동일하게 만들어진다. 프레임워크가 얼마나 중요하길래 최상위 디렉터리 구조를 결정지어 버리는 걸까? The Web is a delivery mechanism! (I/O Channel) 웹 자체는 아키텍처적으로 중요하지 않다. 단지 데이터 전달 채널일 뿐이다. 웹 어플리케이션을 작성한다는 말은 이..
2019.12.05 -
이슈의 시작: 다운 사이징을 했는데 이미지 데이터 크기가 오히려 늘어났다 예전에 개발을 담당했던 모 서비스에서 이미지를 전송할 때 이미지가 5MB(압축하지 않은 JPEG데이터 기준)를 넘어가면 긴 변(long edge)을 1920px로 리사이징하는 정책이 있었습니다. 그래서 프로젝트 내에 있었던 UIImage extension 의 resize 메소드를 사용했습니다. 그런데 이상하게도 특정상황에서 사진 전송시 10초로 설정해 놓은 타임아웃이 발생했고 디버깅한 결과 파일 사이즈가 20MB가 넘어가서 10초안에 전송이 안되는 것이 원인이었습니다. 처음에는 '특정상황에서 이미지 리사이징을 안타고 있는 모양이다'고 생각했습니다. 그런데 확인해 보니 예상과 달리 리사이징 로직을 잘 타고 있었고, 리사이징 전에 43..
iOS에서의 이미지 리사이징에 대하여이슈의 시작: 다운 사이징을 했는데 이미지 데이터 크기가 오히려 늘어났다 예전에 개발을 담당했던 모 서비스에서 이미지를 전송할 때 이미지가 5MB(압축하지 않은 JPEG데이터 기준)를 넘어가면 긴 변(long edge)을 1920px로 리사이징하는 정책이 있었습니다. 그래서 프로젝트 내에 있었던 UIImage extension 의 resize 메소드를 사용했습니다. 그런데 이상하게도 특정상황에서 사진 전송시 10초로 설정해 놓은 타임아웃이 발생했고 디버깅한 결과 파일 사이즈가 20MB가 넘어가서 10초안에 전송이 안되는 것이 원인이었습니다. 처음에는 '특정상황에서 이미지 리사이징을 안타고 있는 모양이다'고 생각했습니다. 그런데 확인해 보니 예상과 달리 리사이징 로직을 잘 타고 있었고, 리사이징 전에 43..
2019.09.27 -
예전에 github에 올려놓았던 것을 모아놓기 위해 여기에도 올린다. https://github.com/knine79/notifyBuildResult
Xcode에서 빌드 결과를 푸시 알림으로 받기예전에 github에 올려놓았던 것을 모아놓기 위해 여기에도 올린다. https://github.com/knine79/notifyBuildResult
2019.08.29 -
I set up iTerm and zsh last week on my Mac and I was totally satisfied with it except for one thing. (Set-up referenced https://beomi.github.io/2017/07/07/Beautify-ZSH/, https://wayhome25.github.io/etc/2017/03/12/zsh-alias/) Problem That is a slightly ugly color on Apple Terminal against iTerm. Because Apple Terminal supports only 256 colors. So I wanted to use bash on Apple Terminal. How to Sol..
A Tip to use both Apple Terminal and iTermI set up iTerm and zsh last week on my Mac and I was totally satisfied with it except for one thing. (Set-up referenced https://beomi.github.io/2017/07/07/Beautify-ZSH/, https://wayhome25.github.io/etc/2017/03/12/zsh-alias/) Problem That is a slightly ugly color on Apple Terminal against iTerm. Because Apple Terminal supports only 256 colors. So I wanted to use bash on Apple Terminal. How to Sol..
2019.06.20 -
C++ #include #include #include #include using namespace std; typedef struct Edge { int to, w; } Edge; typedef struct Node { int no, dist; bool operator n.dist; } } Node; vector edge[4001]; bool visited[4001]; int dist[4001]; priority_queue to_visit; int main() { int N, M; scanf("%d%d", &N, &M); for (int i = 0; i < M; i++) { int A, B, C; scanf("%d%d%d", &A, &..
다익스트라C++ #include #include #include #include using namespace std; typedef struct Edge { int to, w; } Edge; typedef struct Node { int no, dist; bool operator n.dist; } } Node; vector edge[4001]; bool visited[4001]; int dist[4001]; priority_queue to_visit; int main() { int N, M; scanf("%d%d", &N, &M); for (int i = 0; i < M; i++) { int A, B, C; scanf("%d%d%d", &A, &..
2019.06.20