https://github.com/realm/SwiftLint GitHub - realm/SwiftLint: A tool to enforce Swift style and conventions.A tool to enforce Swift style and conventions. Contribute to realm/SwiftLint development by creating an account on GitHub.github.comSwiftLint는 Swift 문법 스타일 정적 분석 도구입니다! 저는 팀원들과 코드 스타일을 맞추기 위해 Swift 스타일 가이드를 같이 스터디해보기도 했는데요,아무래도 모든 코드를 리뷰하고 지적할 수는 없다보니 조금씩 허용하게 되는 부분이 아쉬웠습니다.. 또한 저 혼자서도 꽤 규칙..
의존성 주입하는게 귀찮아질 쯤 DI라이브러리를 알아보기 시작했는데요, 종류가 정말 많더라구요... 그래서 뭘 쓸지 고민하다가 각 라이브러리의 Overview를 읽어보며 특징을 정리해보게 되었습니다! Factory (0.9K)https://github.com/hmlongco/Factory GitHub - hmlongco/Factory: A new approach to Container-Based Dependency Injection for Swift and SwiftUI.A new approach to Container-Based Dependency Injection for Swift and SwiftUI. - GitHub - hmlongco/Factory: A new approach to Containe..
[iOS] FCM으로 Push Notification (푸시 알림) 구현하기 FCM(Firebase Cloud Messaging)같은 경우는 공식문서와 설정 튜토리얼이 정말 잘 되어있어서 공식 문서를 따라가시는 것도 좋을 것 같습니다! I. Key 발급 1. 우선 먼저 Apple Developer Member Center에서 Keys에 들 dokit.tistory.com 이번엔 FCM에 이어서 로컬에서 푸시를 구현해보려고합니다. 별도의 토큰이 필요하지 않기 때문에 훨씬 간단해요! 알림 허용 받기 우선 사용자에게 알림 허용 권한을 받야야합니다. AppDelegate에서 설정하기 import UserNotifications class AppDelegate: NSObject, UIApplicationDeleg..
에러 핸들링은 정말 중요합니다. 단순히 라이브러리에서 발생하는 에러를 처리하는 것 뿐만 아니라, 비즈니스 로직에 따라 적절한 에러를 생성하고 다른 레이어에서 처리해야합니다. 그래서 이번 포스팅에서는 Combine에서 에러를 핸들링하는 방법을 정리해보았습니다. 에러의 종류 프로그램에는 2가지 종류의 에러가 있습니다. 개발자 에러와, 사용자 에러입니다. 개발자 에러는 개발 도중, 즉 디버그 모드에서 발생할 수 있는 에러입니다. 개발자 에러를 내기 위해서는 assert문을 주로 사용하며 assert문은 코드를 작성하는 단계에서 문제가 있을 경우 프로그램을 중단하고 에러 메세지를 표시해줍니다. 이를 통해 개발자는 논리가 맞는지 확인하거나, 전달받은 값이 유효한 값인지 확인해볼 수 있습니다. assert문은 릴리..
문득 Task의 사용 방법을 자세히 모르고 있는 것 같아 Swift Concurrency 공식 문서를 정독해보게 되었습니다. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/ Documentation docs.swift.org 이건 영문이고 https://bbiguduk.gitbook.io/swift/language-guide-1/concurrency 동시성 (Concurrency) - Swift 한 동시성 도메인에서 다른 동시성 도메인으로 공유될 수 있는 타입을 전송 가능 타입 (sendable type) 이라고 합니다. 예를 들어, 액터 메서드로 호출될 때 인수로 전달되거나 작업의 결과로..
일반적인 동기 함수 테스트는 정말 간단합니다. func test_signup_email_validation() { // True XCTAssertTrue(viewModel.isValidEmail("test@example.com")) XCTAssertTrue(viewModel.isValidEmail("user@domain.co.uk")) // Fasle XCTAssertFalse(viewModel.isValidEmail("invalid_email")) XCTAssertFalse(viewModel.isValidEmail("user@.com")) XCTAssertFalse(viewModel.isValidEmail("@domain.com")) } 함수의 input과 output이 명확하므로 손 쉽게 여러 Tes..
문제: 구슬을 나누는 경우의 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 import Foundation func solution(_ balls:Int, _ share:Int) -> Int { if (balls == share ){ return 1 } let answer = fac(balls) / fac(balls - share) / fac(share) return Int(NSDecimalNumber(decimal: answer)) } func fac(_ n: Int) -> Decimal{ var mu: Decimal = Decimal(1) f..
문제 가장 가까운 같은 글자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞..
- Total
- Today
- Yesterday
- RX
- Swift Concurrency
- swift
- programmers
- MVVM
- ios
- TestCode
- coordinator pattern
- SWM
- design pattern
- 코디네이터 패턴
- reactive programming
- MVC
- Flutter
- 리액티브 프로그래밍
- DocC
- Architecture Pattern
- MVI
- healthkit
- combine
- 노션
- 프로그래머스
- 소프트웨어마에스트로
- notion
- GetX
- Flux
- 비동기/동기
- 아키텍쳐 패턴
- Bloking/Non-bloking
- SwiftUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |