일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Alert
- Appearance변경
- SWIFT
- kakaomap
- segue
- programmers
- autolayout
- ios
- UserDefaults
- android
- swiftUI
- NotificationCenter
- SwiftUI_Preview_Provider
- AsyncImage
- ios15
- image
- cocoapods
- EventKit
- UIStackView
- CoreLocation
- Kotlin
- ViewModifier
- 백준
- pod install
- format형식
- 코딩테스트
- snapkit
- alamofire
- Java
- MapKit
- Today
- Total
목록분류 전체보기 (68)
감자주먹밥
동시성 프로그래밍 (Concurrency Programming) - 야곰닷넷 동시성 프로그래밍 동시성 프로그래밍(Concurrency Programming) 코스에 오신 것을 환영합니다! 이번 코스는 동시성 프로그래밍에 대한 이해를 […] yagom.net 야곰사이트의 동시성 프로그래밍을 수강하고 정리 한 글. 동시성 프로그래밍이란? 하나의 CPU가 여러 작업을 동시에 처리하는 것. 싱글코어에서도 가능한 논리적인 개념. 여러개의 스레드를 이용하여 동시에 여러 작업을 처리한다. 실제로는 여러 작업을 나열해두고 하나씩 번갈아가며 작업을 처리하는데, 속도가 매우 빨라 동시에 작업을 처리하는 것처럼 보여진다. 아주 빠르게 Context Switching을 하는 것. 병렬 프로그래밍과 차이점 병렬 프로그래밍은 C..
BDD(Behavior Driven Development) BDD는 TDD에 기반을 두고 있는 행동 주도 개발 방법으로 테스트 보단 행위에 중점을 두고 개발하는 방법이다. TDD와 BDD 차이점 BDD는테스트케이스 자체가 요구사항이 되도록 하는 개발 방법이다. 이미 작성된 요구사항이나 기획서가 있다면 그걸 따라 BDD 방법으로 테스트 케이스를 작성해 TDD보다 빠르게 테스트를 작성하고 검증할 수 있다. TDD, BDD는 상호보완적인 관계다.각자 장점을 살려 테스트를 작성할 때 두 방법을 동시에 사용할 수 있다. BDD로 시나리오를 검증하고, TDD로 시나리오에 사용되는 모듈들을 검증하는 방식으로 사용하면 좋다. BDD 작성 BDD 방법으로 테스트 케이스 작성할 땐 요구사항을 받아 설계하는 사람과의 협업,..
TDD(Test-Driven Development) TDD는 테스트 주도 개발로 소프트웨어 개발 프로세스 중 하나다. 요구사항을 검증하는 자동화된 테스트 케이스를 먼저 작성하고, 테스트를 통과하기 위한 최소한의 코드를 작성한다. 마지막으로 표준에 맞게 작성한 코드를 리팩토링한다. 기존 프로세스는 [ 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포 ] 의 사이클을 가지고 있는데, 소비자의 요구사항이 명확하지 않거나 수정사항이 생겼을 경우 설계를 처음부터 고쳐야 하는 경우가 발생한다. 초기 설계는 바로 완벽하게 나오긴 힘들기 때문에, 수정사항을 통해 코드가 수정, 추가, 제거 되는 과정에서 중복되는 또는 불필요한 코드가 남아 후에 재사용이 어려워지고 유지보수도 힘들게 된다. TDD프로세스는 테스트..
UITest UITest는 UnitTest와 다르게 한 화면에 있는 UI의 동작을 검증하는 테스트를 작성할 수 있다. UnitTest에선 동작별로 잘 작동하는지 테스트를 작성했다면 UITest는 화면에 들어오는 입력에 UI가 잘 존재하는지를 테스트 할 수 있다. import XCTest final class MyUITests: XCTestCase { override func setUpWithError() throws { continueAfterFailure = false } override func tearDownWithError() throws { } func testExample() throws { let app = XCUIApplication() app.launch() } func testLaunc..
Test? 작성한 코드가 의도한대로 작동하는지 검증하는 과정 UI 표시 UI Layout 설정 API Request UserDefaults 저장/가져오기 등 테스트 종류 Unit Test - 특정 함수, 메소드의 동작에 대한 테스트 (오늘 알아볼 것) UI Test - UI 표시 / UI Action에 대한 테스트 Test Coverage XCTest 프레임워크를 사용해서 테스트를 작성할 수 있다. 테스트 작성 % 도 TestCoverage로 볼 수 있다. TestCoverage - Project에서 몇%의 코드에 대해서 테스트가 작성되어 있는지 나타낸 숫자. 사용방법은 간단하다. Edit Scheme에서 Test > Options에 Code Coverage 체크 끝. TestCoverage 사용 - A..
Presenter - 데이터 처리 (API Request,..) Model - 데이터 수정, 추가 ViewController - View 설정, 업데이트 Apple MVC는 기존 ViewController에 View, Controller 기능이 집중되어 작성을 하며 커지게 되어 테스트를 하기 어려운 환경이다. Controller의 역할을 분리해 구현한것이 MVP다. View를 최대한 멍청하게 UI를 뿌려주고 Action만 주고받고 받은 Action을 Presenter에 넘겨 그려야 하는 값만 넘겨주고 View에서 다시 그려주는 방식이다. MVVM도 비슷해보이지만 다른점, MVP는. 1 : 1연관관계, MVVM은 * : 1 이다. 특징 UI를 뿌려주는 View, 비즈니스 로직처리를 하는 Presenter를..
Localization 현지화 - Apple Developer 앱, 제품 페이지 및 마케팅 자료를 현지화하여 전 세계의 고객과 더 효과적으로 연결하는 방법에 대해 알아보십시오. developer.apple.com 어플을 개발하고 출시했을 때 여러 나라의 언어를 대응해서 다양한 국가에 사용경험을 주기 위해서는 앱 현지화가 필수다. 국가마다 사용하는 언어를 대응해 개발하려면 Localizable을 사용하면 된다. SwiftUI도 UIKit과 비슷하게 설정할 수 있다. Localization 설정 Project > Info > Localizations 를 보면 언어를 추가할 수 있는 항목이 있다. 기본으로 English가 Base로 설정되어 있고 한국어만 추가하고 한국어-영어 대응 해보기. Strings Fi..
@State 화면상태를 나타내거나 표시할때 사용되는 타입 String, Int, Bool과 같은 간단한 값을 저장하고 View의 현재 상태를 표시하기 위해 사용 화면 내부에서 사용되기 때문에 private를 꼭 붙이는 것을 권장한다. @State변수의 값이 변경되면 뷰는 빠르게 리로드해 변경된 값을 적용한 뷰를 보여준다. struct Sample: View { @State private var text = "" @State private var isDisable = true var body: some View { VStack(alignment: .leading) { Text(text) Divider() TextField("Place holder", text: $text) Toggle(isOn: $isDi..
Design Pattern ? 개발과정에 공통으로 발생하는 문제를 해결하기 위한게 디자인 패턴이다. 대부분의 디자인 패턴은 복잡하고 거대한 서비스를 만들기 위해 만들어졌다. MVC, MVP, MVVM MVVM Pattern ? 비즈니스 로직과 프레젠테이션 로직을 UI로 부터 분리시키기 위해 만들어진 패턴 View - ViewModel - Model로 구성되어 있다. View -> UI 입력 출력만 담당 ViewModel -> View로 부터 오는 입력을 받아 데이터를 처리하고 다시 보내준다. Model -> 데이터 처리에 필요한 모델 MVVM 에서 ViewModel에 모든 비지니스 로직이 있어야 하는 것이 아니다. ViewModel에는 화면용 데이터를 갖고 있는것, Model 은 View용 Model 로..
RxCocoa는 UIKit의 Rx extension 이다. UI특징 항상 UI 스레드에서만 처리해야한다. 화면을 그리다 에러가 나면 스트림이 끊어져도 에러를 처리하고 다시 돌아야함. RxCocoa의 Traits는 위 조건을 지키면서 UI를 처리할 수 있다. RxCocoa의 Traits를 알아보자! RxRelay Subject와 같지만 에러가 나도 끊어지지 않고 무시. onNext 이벤트만 존재하고, dispose를 통해 종료할 수 있다. 실시간으로 UI를 변경해야할 때 Subject 대신에 Relay를 쓴다. Relay에는 PublishRelay와 BehaviorRelay가 있다. 특성은 PublishSubject, BehaviorSubject 와 동일하다. PublishRelay는 초기값이 없고 구독한..