이번 포스트에서는 Kingfisher를 사용하여 비동기로 이미지를 불러오는 방법을 소개합니다. 이미지를 비동기로 불러오는 방법에는 크게 2가지가 있습니다. 1. 이미지를 불러온 후 UIImageView에 직접 적용하기 이미지를 재가공할 필요 없이 바로 적용할 경우 사용하는 가장 일반적이고 기본적인 방법입니다. 2. 이미지를 불러와서 UIImage로 저장한 후 해당 이미지를 후처리한 후 UIImageView에 적용하기 이미지를 재가공할 필요가 있을 경우 사용하는 방법입니다. 캐싱할 경우에도 사용할 수 있는 방법이 되겠습니다. 어플리케이션을 개발 할 때 두 가지 경우 모두 사용할 수 있기 때문에 알아두시면 좋을 것 같습니다. 1. 이미지의 URL을 통해 바로 UIImageView에 적용하기 특별한 부가 설명..
Core Data의 CRUD (Create, Retrieve, Update, Delete)를 구현할 때 Fetched Result Controller를 구현하여 사용할 수 있습니다. Core Data는 영구적으로 어떤 데이터를 저장할 수 있도록 해주는 도구인데, 일반적인 Database와는 조금 다른 양상을 보입니다. 하지만 데이터베이스와 유사한 구조를 가지고 있으며 관계 또한 지정할 수 있기 때문에 직관적으로 데이터를 정형화할 수 있습니다. User Defaults와 다른 점은 User Defaults는 Key-Value의 구조를 가지고 있다면 Core Data는 Entity에 다양한 Key들이 있고 Entity에는 Key에 해당하는 값들이 존재합니다. 관계는 데이터베이스에서 1:1, 1:N, N:1,..
2019년은 나에게 정말 다양한 경험을 많이 해 본 해였던 것 같다. 1. 2019년 6월 25일 군 전역 2017년 입대를 하여 2019년 드디어 전역을 하였다. 길다면 길고 짧다면 짧은 시간이었지만 나 자신을 위해 굉장히 노력을 많이 하고 공부도 많이 하며 고민을 많이 하고 노력을 많이 했던 기간이었던 것 같다. 책을 태어나서 군대에서 만큼 많이 읽어 본 적은 없었고 운동도 매일같이 꾸준히 한 적도 없었다. 자격증도 군 생활 중 5개 이상 취득하는 것 또한 사회에 있어서는 쉽지 않은 도전이었다. 대한민국 공군 제 10 전투비행단 항공정비전대 부품정비대대 잊지 못 할 것이다. 2. 유어슈 iOS 개발팀 복귀 2년 간의 군생활 후 다시 유어슈로 복귀를 하였는데 어느 팀을 갈까 고민을 많이 했었다. 그 때..
이번 포스트에서는 iOS TDD(Test Driven Development)에 대해 알아보도록 하겠습니다. TDD에는 다음과 같이 세 가지 단계로 구분됩니다. TDD는 실패하는 테스트를 작성하고(red), 작성된 테스트를 통과하는 코드를 작성한 후(green), 작성한 코드를 리팩토링하는(refactor) 세 단계를 거칩니다. 일단 RED 단계를 거치기 위해 [PROJECT PROCESS] 'STEP1'의 기획서를 보고 해당 기능 구현에 대해 요구사항을 정리한 후 테스트 코드(Failing Test Code)를 작성합니다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any a..
WWDC 19에서 소개된 내용입니다. iPad에서 Multiple Windows를 지원한다는 소식입니다. 기존에는 하나의 앱은 하나의 창만 쓸 수 있었습니다. 분할 창을 쓴다고 해도 다른 앱을 사용해야 했습니다. (예를 들면, 카카오톡 + 사파리, 메모 + 사파리 처럼 서로 다른 어플) 이번 iPad 13이 나오면서 Scene 이라는 개념이 등장했습니다. Xcode 11버전에서 프로젝트를 생성하면 Scene Delegate라는 것이 생성됩니다. 기존에는 App Delegate만 있었는데 이제는 App Delegate와 Scene Delegate가 모두 생기게 됩니다. iPad OS 13이상에서 사용자는 앱 UI의 여러 인스턴스를 동시에 만들고 관리할 수 있으며, app switcher를 사용하여 서로 전..
Security Requirements Confidentiality Data Integrity Availability User Authentication Non-repudiation Details of Theory of Secure Communication Condition of Perfect Secrecy P(M|C) = P(C|M)P(M) / P(C) P(M|C) = prob. of message M given C intercepted P(C|M) = prob. of cipher text C generated by M P(M) = prob. of M being selected P(C) = prob. of obtaining C Necessary and Sufficient Condition for Per..
Create DataFrame from Dictionary Array from pyspark.sql import Row valuesA = [('Pirate',1),('Monkey',2),('Ninja',3),('Spaghetti',4)] rdd1 = sc.parallelize(valuesA) rddA = rdd1.map(lambda x: Row(name = x[0], id = x[1])) TableA = sqlContext.createDataFrame(rddA) # TableA1 = spark.createDataFrame(valuesA, ['name', 'id']) valuesB = [('Rutabaga',1),('Pirate',2),('Ninja',3),('Darth Vader',4)] rdd2 = s..
이번 포스트에서는 비밀번호, 주민번호 등 민감 정보를 안전하게 처리할 수 있는 Keychain에 대해서 살펴보도록 하겠습니다. 우리는 기존에 데이터를 기기에 저장해두기 위해 UserDefaults를 사용하였었는데 이는 단순 데이터를 저장하기에는 문제가 없으나 비밀번호, 인증서, 개인 정보 등 민감한 정보를 저장하기에는 base-64로 인코딩해서 저장하는 것으로 충분하지 않는가? 라고 생각할 수 있겠지만 이는 보안 상 결코 안전하지 않습니다. 1. KeyChain 이란? 컴퓨터 사용자는 종종 안전하게 보관해야하는 작은 비밀을 가지고 있습니다. 예를 들어, 대부분의 사람들은 수많은 온라인 계정을 관리합니다. 각각에 대해 복잡하고 고유한 암호 (Unique Passwords)를 기억하는 것은 불가능하지만 암호..
- Total
- Today
- Yesterday
- 함수형
- Swift
- Rxjava
- Kotlin
- Apple Watch
- 안드로이드
- Notissu
- Reactive programming
- CloudComputing
- retrofit
- SwiftUI
- apple
- ios
- C++
- 오토레이아웃
- 알고리즘
- android
- 함수형프로그래밍
- 코틀린
- watchos
- 스위프트
- 애플워치
- Elliotable
- Auto Layout
- 컬렉션
- databinding
- 아이폰
- 상속
- java
- XCode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |