Home

Swift closure와 Objective c block의 차이

늘 헷갈리는 Swift closure와 Objective c block의 외부(closure 또는 block 밖) 변수 copy 방식을 정리해봤다. 참조 타입의 변수 copy 방식은 reference copy로 동일하다. 그러나 값 타입의 변수 copy 방식은 두 언어의 기본 동작이 반대로 되어있다. 헷갈리니 코드를 통해 살펴보자. Swift closure의 값 타입 변수 copy 방식 기본 동작: reference copy var someInt: Int = 10 let closure: () -> Void = { print(someInt) // reference copy default } som...

Read more

True False Positive Negative Matrix

Apple Create ML을 공부하던 차에, Classification 관련 용어를 정리해봤다. Definition True vs False 예측이 참(True)인지 거짓(False)인지를 의미 Positive vs Negative 예측 값 자체 양성(Positive) 또는 음성(Negative)를 의미 이를 조합하면 다음의 4가지가 나온다. 늑대 예측하기 True Positive (TP) 양성이라고 예측했는데, 그 예측이 참이었다. (늑대라고 예측했는데, 진짜 늑대였다. 👍) False Positive (FP) 양성이라고 예측...

Read more

OAuth에 대한 오해

Terminology OAuth를 인증에 사용할 수 있을까? 먼저 Authentication과 Authorization의 용어부터 짚어보자. Authentication (인증): 참이라는 근거가 있는 무언가를 확인하거나 확증하는 행위 사용자 인증에 한정하자면, A 유저가 정말 A인지 검증하는 행위라 하겠다. Authorization (허가): 리소스에 대한 접근 권한 및 정책을 지정하는 기능 OAuth 2.0 OAuth는 허가(Authorization Framework)에 해당한다. Abstract Flow Grant Type에 따라 Flow가 달라질 수 있지만, ...

Read more

Resolving dyld error

Dyld error 원소스에서 module화를 위한 작업을 하면서 Xcode에서 특정 layer에 해당하는 코드 뭉치들을 package로 분리하였고, 프로젝트에 분리한 package를 추가한 뒤 Simulator로 실행해보니 빌드는 성공했지만, 실행과 동시에 에러가 났다. dyld[94985]: Library not loaded: @rpath/XCTest.framework/XCTest 이를 해결해 보고자 Project > Target > Frameworks, Libraries, and Embedded Content에 XCTest.framework을 추가한 후 실행해보니 이번에도 빌드는 성공했지만 ...

Read more

Optimizing recursive function

재귀 함수의 최적화 방법을 알아봅니다. Recursive Function 컴퓨터 과학에서 재귀란 자신을 정의할 때, 자기 자신을 재참조하는 방법을 뜻합니다. 위키백과: 재귀 Wikepedia: Recursion Dangers of Recursion 재귀 함수에는 크게 2가지 위험 요소가 있다고 합니다. Infinite Loop 재귀 함수의 반환 조건을 잘못 설정하는 경우, 무한 루프에 빠지게 됩니다. Stack Overflow stack은 heap에 비해 훨씬 적은 메모리 공간을 할당 받습니다. 따라서 재귀 호출이 많아질 수록 sta...

Read more

Comparing filters for Realm Results

Realm Results에 사용 가능한 Swift filter와 Realm filter를 비교해 봅니다. Function Definition Swift filter func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element] Realm filter func filter(_ predicate: NSPredicate) -> Results<Element> Swift filter는 isIncluded closure가 true인 값을 필터링하는 반면, Realm filter는 predicate로...

Read more