// AppDelegate.swift // ... // β λ©μμ§ μμ extension AppDelegate: UNUserNotificationCenterDelegate { // ... func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { // β notification μ payload μ `recordId` μ `roomId` λ₯Ό κ°μ§κ³ νλ©΄μ νμμ μ¬μ©ν μ μμ΅λλ€. let userInfo = response.notification.reque..
kotestκ° μλ€λ©΄ TDD λ¬»κ³ BDDλ‘ κ°! Quick μ΄ BDD λ₯Ό μ§μνλ νλ μμν¬μ΄κΈ° λλ¬Έμ μμ if Kakao μΈμ μ μμ²νλ©° TDD μ BDD μ λν΄μ μμ½ν΄λ³΄μμ΅λλ€. TDD? Test-driven development κ°λ°μ΄ ν μ€νΈ μ£Όλλ‘ μ§νλ¨μ μλ―Έ. ν μ€νΈ μΌμ΄μ€λ₯Ό μμ±νκ³ , ν μ€νΈλ₯Ό λλ € μ€ν¨ν μ½λλ₯Ό μμ νλ μμ μ λ°λ³΅νλ κ²μ μλ―Ένλ€. ν μ€νΈ μΌμ΄μ€λ₯Ό λ§λ€λ©΄ TDD μΈκ°μ? μ μλ₯Ό TDD λΌκ³ λ³Ό μ μλ€. ν μ€νΈ μΌμ΄μ€λ₯Ό λ¨Όμ μμ±νκ³ μ€κ³νλ©΄ μ½λ μ€κ³κ° ν μ€νΈ κ°λ₯νκ² μμ±μ΄ λλ€. μ΄λ κ² λλ©΄ μ΄νμλ ν μ€νΈ κ°λ₯ν μ½λκ° μ μ§λ μ μλ€. Testable ν μ½λμ μ₯μ μ? ν μ€νΈ νκΈ° μ½κ² λ§λ€μ΄μ§ μ½λλ€! ν μ€νΈν λͺ¨λμ μν μ΄ λͺ νν΄μΌ ν¨. μ΄λ₯Ό μν΄ λͺ¨..
μλμ λ·°λ₯Ό λ§λ€κΈ° μν κ³Όμ μ€μμ μκ²λ SnapKit μ¬μ©λ²μ μ μ΄λ³΄μ. νλ©΄μ yμΆ μ€μ¬μΌλ‘λΆν° constraint λ₯Ό μ‘κ³ μΆλ€. λλΉ λλΉ λμ΄λ₯Ό λΉμ¨λ‘ μ‘κ³ μΆλ€. μ°μ μλμ κ°μ λ μ΄μμμ μ‘κ³ μΆμλ€. κ·Έλμ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ±νμλ€. // "κΈ°λ³Έ" μ΄λΌκ³ μ ν UIView. basicBackgroundView.snp.makeConstraints { make in // π¨ inset μ΄ μ μ©λμ§ μμμ yμΆ μ€μ¬μ μμΉ. make.bottom.equalTo(view.snp.centerY).inset(-63) make.leading.trailing.equalToSuperview().inset(24) // π¨ multipliedBy κ° μ μ©λμ§ μμμ λ·°μμ 보μ΄μ§ μμ. make.heig..
RxCocoa traits RxSwift λ¬Έμλ₯Ό μ 리 λ° μμ½ν΄λ³΄κ² μ΅λλ€. (μΆμ² - RxCocoa Traits) ControlProperty μ ControlEvent λ UI μμμ μμ±μ λνλ΄λ Observable/ObservableType μ trait μ λλ€. π ControlProperty ControlProperty λ ObservableType κ³Ό ObserverType μ λμμ μ±ννλ ControlPropetyType μ μ±νν©λλ€. Subject μ κ°μ΄ νλ‘νΌν°μ μλ‘μ΄ κ°μ κ΄μ°°ν μλ λ°©μΆν μλ μμ΅λλ€. public struct ControlProperty : ControlPropertyType { ... } /// Protocol that enables extension..
RxCocoa μ μλ Traits μ λν΄μ μμ보μ κ·Έ μ€μμ Driver, Signal μ λν΄μ μμ보μ Traits? Rx λ₯Ό λ³΄λ€ μ§κ΄μ μ΄κ² μ¬μ©ν μ μλ κ°λ ₯ν λ°©λ²μ΄ μμ΅λλ€. Traits λ μ νμ μΈ λ°©λ²μΌλΏμ λλ€. ν΅μ¬μ RxSwift μ RxCocoa μμ νλ³νλμ§ μμ Observable μνμ€λ₯Ό μμ λ‘κ² μ¬μ©ν μ μμ΅λλ€. λ€μκ³Ό κ°μ΄ Traits μ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ λ¨μΌ μ½κΈ° μ μ© Observable μνμ€ νλ‘νΌν°λ₯Ό κ°μ§ wrapper struct λΌλ κ²μ μ μ μμ΅λλ€. struct Single { let source: Observable } struct Driver { let source: Observable } ... RxCocoa traits RxSwift λ¬Έμ..
λ΄μ© iOS) μ± μλ λ°°ν¬λ₯Ό μν Fastlane μ€μ μμ κΈμμ Fastlane μ μ€μ νμμ΅λλ€. μ΄λλ cert and sigh λ°©λ²μ ν΅ν΄μ code signing μ μμ νμμ΅λλ€. code signing μ 무μμ΄ νμνκ³ , match λ°©λ²μ λν΄μ μμλ³΄κ² μ΅λλ€. β Code Signing(or Signing) μ΄λ? “Code signing(or signing) an app allows the system to identify who signed the app and to verify that the app has not been modified since it was signed.” μΆμ² - What is app signing? μ½λ μλͺ μ μ±μ μλͺ ν μ¬λμ μλ³νκ³ , μλͺ λ μ΄ν ..
catch : error λ₯Ό μλ‘μ΄ Observable λλ κ°μΌλ‘ μ²λ¦¬ retry : μ¬μλ materialize / dematerialize : sequence λ₯Ό μ μ΄ν΄μ μ²λ¦¬ onError μμ μ²λ¦¬νλ©΄ λμ§ μλμ? Error μ΄λ²€νΈλ Observable μ μ’ λ£μν€κ² λ©λλ€. κ·Έλμ μ’ λ£μν€μ§ μκ³ λ€μκ³Ό κ°μ΄ μ΄λ²€νΈλ₯Ό λ°μν€μκ³ completed κ° λ°μλλλ‘ error handling μ νκ³ μ ν©λλ€. catch catch RxSwift 6.0 μμ catchError(_:) μ΄ catch(_:) λ‘ μ΄λ¦μ΄ λ°λμμ΅λλ€. μΆμ² - RxSwift release extension ObservableType { /** Continues an observable sequence that is t..
λ΄μ© Widget μ΄ λ³΄μ¬μ§λ μΈ κ°μ§ μμ μ΄ μμ΅λλ€. placeholder, snapshot, timeline λ₯Ό νμΈν΄λ³΄κ² μ΅λλ€. μΈμ 보μ¬μ§λμ§ UI λ₯Ό ν΅ν΄ νμΈν΄λ³΄μ. TimelineProvider νλ‘ν μ½μ λ€μ μΈ κ°μ§ λ©μλλ₯Ό μꡬν©λλ€. struct Provider: TimelineProvider { typealias Entry = SampleEntry func placeholder(in context: Context) -> Entry { // Implementation here... } func getSnapshot(in context: Context, completion: @escaping (Entry) -> ()) { // Implementation here... } func ge..
- OpenSourceLibrary
- containerBackground
- projectsetting
- APNS
- Notification
- SwiftUI
- UserDefaults
- Protocol
- μλ²ν΅μ
- IOS
- configurable widget
- WWDC22
- Swift
- YPImagePicker
- watchOS
- Widget
- RxCocoa
- Firebase
- 2022 KAKAO TECH INTERNSHIP
- Algorithm
- github
- WidgetKit
- CloneCoding
- MOYA
- urlsession
- Objective-C
- async/await
- WWDC
- MVVM
- rxswift
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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 |
- Total
- Today
- Yesterday