앱등이에게 살충제를 뿌린다.
-
주말동안 알아본 Secure Enclave앱등이에게 살충제를 뿌린다./iOS 2022. 1. 2. 23:29
출처: https://www.andyibanez.com/posts/cryptokit-secure-enclave/ Secure Enclave 암호화 기능만을 수행하는 iOS(OS)에 완전히 독립된 하드웨어. 생체인식 기능이 탑재된 iPhone 5S부터 가능. 터치바 있는 맥북도 가능. Touch ID, Face ID 인식에 필요한 수학적 계산도 Secure Enclave에서 일어난다. Touch ID데이터, Face ID데이터가 Secure Enclave에 저장되는 것은 아님! iOS가 Touch ID, Face ID 데이터로 연산을 한 뒤 이 데이터를 가지고 Secure Enclave에 물어본다. 이거 맞아?? Yes라고 대답하면 디바이스의 잠금이 해제된다. Security Framework, Crypt..
-
WWDC2020 - Unsafe Swift앱등이에게 살충제를 뿌린다./Swift 2021. 5. 14. 18:41
Unsafe Swift Swift에서 제공하는 많은 타입, 프로토콜, 프로퍼티등 그 중 Unsafe라는 접두어를 가진 것들이 있다. 무엇이 다른 것일까? 수행하는 기능, 인터페이스에서 큰 차이점을 가지지는 않는다. Invalid Input을 처리하는 과정에서 차이점을 가진다. 대부분의 Operator가 Input을 완전히 Validation한다. (Swift가 Safe한 Programming Language인 이유) 그래서 우리는 쉽게 에러를 리포트받고 수정할 수 있다. Example Optional을 예로 들어보자. let value: Int? = nil print(value!) // Fatal error: Unexpectedly found nil while unwrapping an Optional v..
-
[RxSwift] Rx Observer들의 기본 스케쥴러앱등이에게 살충제를 뿌린다./Swift 2020. 9. 11. 17:15
ControlProperty는 항상 MainScheduler // ControlProperty.swift **The implementation of `ControlProperty` will ensure that sequence of values is being subscribed on main scheduler (`subscribeOn(ConcurrentMainScheduler.instance)` behavior).** Driver는 거의 MainScheduler // Driver.swift If `drive*`, `subscribe*` and `bind*` are called from background thread, it is possible that initial replay will happen ..
-
WKWebView와 쿠키의 관계에 대하여앱등이에게 살충제를 뿌린다./iOS 2020. 4. 13. 23:54
UIWebView에서 WKWebView로 많이들 넘어왔다. 쿠키관리에 있어서 둘은 큰 차이점을 갖는다.UIWebView: HTTPCookieStorage에서 공통으로 관리한다.WKWebView: 웹뷰에서 단독으로 쿠키를 관리한다. 웹뷰안에서는 새로운 세계가 펼쳐진다. 그 안에서 무수한 Request가 발생한다.앱을 사용하다가 웹뷰로 Seamless하게 이어지려면 쿠키 전달이 필수적이다. 1. WKWebView로 쿠키 전달하기NSHTTPCookieStorage에 아무리 쿠키가 많아도 WKWebView로는 쿠키가 전달되지 않는다.따라서, 필요한 쿠키를 WKWebView로 직접 전달해줘야 한다. 아래 코드를 통해 전달할 수 있다.let cookie = HTTPCookie(.....)webView.configu..
-
[RxSwift/RxCocoa] RxCocoa에서 TableView사용하는 코드를 쪼개서 이해해보자.앱등이에게 살충제를 뿌린다./Swift 2020. 3. 15. 20:48
RxCocoa-TableView사용을 위해 구글링을 해보면 아래와 같은 예제소스가 가득하다. // let items = Observable.just([ "First Item", "Second Item", "Third Item" ]) items .bind(to: tableView.rx.items) { (tableView, row, element) in let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")! cell.textLabel?.text = "\(element) @ row \(row)" return cell }.disposed(by: disposeBag) 코드를 좀 이해해보기 위해서UITableView+Rx.swift를 들어가보면 item..
-
[RxSwift/RxCocoa] Subject는 알겠는데, Relay는 뭐지?앱등이에게 살충제를 뿌린다./Swift 2020. 3. 14. 18:34
오 마이갓..Ray Wenderlich의 RxSwift를 2번이나 완독하고 프로젝트에 투입되었는데.. 아는 것보다 모르는 게 더 많다😭Ray Wenderlich에서는 RxCocoa에 대해서는 별로 다루지 않았기 때문이다. ------------------------------------------------------------------------------------------------ 일단 PublishRelay, BehaviorRelay에 대해서 살펴보자. /// BehaviorRelay is a wrapper for `BehaviorSubject`. /// /// Unlike `BehaviorSubject` it can't terminate with error or completed. publ..
-
Swiftlint를 통해서 프로젝트에서 느낌표(!)를 제거해보자앱등이에게 살충제를 뿌린다./Swift 2019. 12. 19. 20:04
간혹 발생하는 크래쉬의 원인. Implicitly unwrapped optional 값이 셋팅 된 뒤로 nil이 될 가능성이 없는 optional이라고 간주되어 !를 붙여주지만,크래쉬로 뒤통수를 친다. 그러면 swiftlint를 통해서 이 느낌표를 제거해보자. .swiftlint.yml파일에서 아래 항목을 추가해주자. opt_in_rules: - implicitly_unwrapped_optional 그러면 우리가 선언한 모든 느낌표에 warning이 발생한다. 하지만 스토리보드에 연결된 @IBOutlet 프로퍼티에는 warning이 발생하지 않는다.얘네들까지 전부 warning을 발생시켜 수정하려면 아래와 같이 lint 옵션을 수정해주면 된다. implicitly_unwrapped_optional: mo..