본문 바로가기

iOS111

HeroTransitions/Hero GitHub - HeroTransitions/Hero: Elegant transition library for iOS & tvOSElegant transition library for iOS & tvOS. Contribute to HeroTransitions/Hero development by creating an account on GitHub.github.comiOS에서 사용되는 animation 중 가장 중요한 부분은 ViewController 간의 전환에 사용되는 animation이 아닐까 싶다. Hero는 iOS 애플리케이션에서 맞춤 전환을 쉽게 구현할 수 있도록 돕는 라이브러리다.Hero는 Keynote의 Magic Move와 비슷하게 작동합니다. 모든 출발지와 도착지 .. 2024. 4. 20.
클린아키텍쳐 5부 정리 (22장~28장) 22장 클린 아키텍처 수십년간 아키텍처에 관한 다양한 아이디어가 있었음 육각형 아키텍처(포트와 어댑터) DCI (Data Context and Interaction) BCE (Boundary Control Entitiy) 이들의 공통점은 "관심사의 분리" 소프트웨어를 계층으로 분리하면서 관심사의 목표 달성 프레임워크 독립성: 프레임워크의 제약사항을 시스템이 강제하도록 하지 않는다. 테스트 용이성: 업무 규칙은 UI, 디비, 웹 서버 또는 다른 요소 없이도 테스트 할 수 있다. UI 독립성: 시스템의 나머지 부분을 변경하지 않더라도 UI를 쉽게 변경할 수 있어야 한다. 데이터베이스 독립성 모든 외부 에이전시에 대한 독립성 DI 프레임워크 SwiInject, Needle도 프레임워크인데 그럼 직접 DI wr.. 2022. 4. 28.
클린아키텍쳐 5부 정리 (15장~21장) 15장 아키텍처란 소프트웨어 아키텍트도 프로그래머이다. 아키텍트도 실제 프로그래밍 작업에 지속적으로 참여해야한다. 소프트웨어 아키텍처: 시스템을 구축했던 사람들이 만들어낸 시스템의 형태 시스템이 쉽게 개발, 배포, 운영 유지보수 되도록 하기위해서는 가능한 한 많은 선택지를, 가능한 한 오래 남겨두는 전략을 따라야 한다.좋은 아키텍처의 조건과 저자의 경험들 개발 팀 구조가 다르면 아키텍처 관련 결정에도 차이가 난다. 저자의 경험 썰 배포 운영 유지보수 선택사항 열어두기 장치 독립성 광고 우편 물리적 주소 할당 결론 세부사항에 대한 결정은 가능한 한 오랫동안 미룰 수 있는 방향으로 설계해야 한다. 16장 독립성 좋은 아키텍처는 다음을 지원한다. 시스템의 유즈케이스 시스템의 운영 시스템의 개발 시스템의 배포 .. 2022. 4. 24.
클린 아키텍쳐 4부 정리 (12장~14장) 12장 컴포넌트 SOLID = 벽돌을 벽과 방에 배치하는 방법 컴포넌트 = 빌딩에 방을 배치하는 방법 컴포넌트 배포단위 시스템 구성요소로 배포할 수 있는 가장 작은 단위 여러 컴포넌트를 서로 묶어서 단일 아카이브로 만들 수 있다. 잘설계된 컴포넌트 = 독립적으로 개발, 배포 가능한 능력 우리 프로젝트는 독립적으로 배포가 가능하지 않은데 단일 컴포넌트인가 컴포넌트의 역사 시즌1 초창기 라이브러리는 메모리의 어느 위치에 로드할지 지정해야함 한번 지정되면 재배치가 불가능 소스코드 형태의 라이브러리를 Application 코드에 포함시켜 컴파일 단점) 컴파일 시간이 너무 오래 걸렸다. 시즌2 라이브러리 코드를 분리하여 개별 컴파일 바이너리 형태로 심벌 테이블을 통해 Application코드를 컴파일 단점) 앱이.. 2022. 4. 8.
클린 아키텍쳐 1, 2, 3부 정리 (1장~11장) 1장 설계와 아키텍쳐 설계: 저수준 구조 결정사항 아키텍쳐: 고수준의 무언가 둘은 명확한 경계를 나눌수 없고 고수준에서 저수준으로 가는 의사결정의 연속성만 있다. 의사결정이라는 키워드를 봤을때 좋은 S/W설계를 목표로 하여 의사결정을 진행해야 하고 좋은 S/W 설계는 "필요한 시스템을 만들고 유지보수 하는데 투입되는 '인력'을 최소화 하는데 있다. 약간 인력의 최소화보다는 인력이 늘어남에 따라 생산성이 비례할 수 있는게 적절한것 같다. 결국엔 돈 "경제성" 이다. 현재 우리팀은 사례처럼 엉망진창이 되어가는 신호를 나타내고 있을까? 만약 그렇다면 원인이 무엇일까. 좋은 아키텍쳐를 통해 해결할 수 있을까. 2장 두가지 가치에 대한 이야기 두가지 가치는 행위: 요구사항을 코드로 구체화 구조: 변경이 용의한 프.. 2022. 3. 31.
클린 아키텍쳐를 어떻게 공부하지 클린 아키텍쳐를 읽기 전에 클린 아키텍쳐란 무엇이고 왜 등장하게 되었는지 어떤식으로 Swfit project에 적용할 수 있는지 알아보자. 클린 아키텍쳐 클린 아키텍쳐: 클린코드의 저자 엉클밥이 제시한 아키텍쳐 맨 바깥쪽의 원: 하위레벨의 메커니즘 안쪽으로 갈 수록 상위레벨의 정책적인 부분 밖에서 안으로 가는 화살표: 의존성은 밖에서 안으로 -> 안쪽원은 바깥쪽에 의존해서는 안된다! eg) 밖의 디비를 어떤걸 쓰는지는 안쪽에서 몰라야 한다. 초록색 부분 Interface Adapter의 역할 - 하위 레이어와 상위 레이어 사이 데이터 포메팅, 이벤트를 받아서 사용자에게 전달 - 이벤트 발생 -> 컨트롤러가 받음 -> 인터렉터에게 명령을 내림 -> 인터렉터가 비즈니스 로직 처리 -> 결과를 프리젠터에게 전.. 2022. 3. 26.
Creating custom combine Publisher(Operator) Combine에는 Publisher와 Subscriber라는 개념이 있다. Combine: framework that let you subscribe to things and get value from things "Things" = Publisher Publisher 자료형에는 Int, String, 등등 에러에는 아무 Swift Error type Subscriber: 소비자 (value를 받아들일 수 있는것) sink assign 특징 *Publisher는 value 를 바로 emit 하지 않고 subscriber의 demand 가 있어야 emit 한다. 일련의 동작과정 Subscriber -- (subscribe) --> Publisher Publisher 에서 receive(subscribe:).. 2021. 10. 4.
[WWDC 2021] What's new in SwiftUI What's new in SwiftUI - WWDC 2021 - Videos - Apple Developer There's never been a better time to develop your apps with SwiftUI. Discover the latest updates to the UI framework — including lists,... developer.apple.com Intro 3단계로 발전해 나왔음, 이번에는 release 3 원래 있던 UIKit, AppKit과 같이 사용할 수 있음 -> 새로운 feature 만들때 사용해봐~~ (응 iOS13이상이쥬~) - 맥 아이패드 아이폰에 노트앱 SwiftUI로 만들어졌음 - 맥의 아바타 Picker로 SwiftUI로 만들어졌음 expan.. 2021. 6. 9.
WWDC 2021 Watch list June 8 What's new in Swift [WWDC 2021] What‘s new in Swift Swift5.5 swift concurrency async await packages: 원래 Swift packages Index -> Swift Package manager 지원하는 패키지 찾을 수 있음 근데 이번 업데이트로 xcode에서 바로 찾을 수 있음 Swift Package Collec.. haningya.tistory.com Meet async/await in swift Explore structured concurrency in swift protect mutable state with swift actors Meet the UIKit button system What's new in .. 2021. 6. 9.
[WWDC 2021] What‘s new in Swift https://developer.apple.com/videos/play/wwdc2021/10192/ What‘s new in Swift - WWDC 2021 - Videos - Apple Developer Join us for an update on Swift. Discover the latest language advancements that make your code easier to read and write. Explore the... developer.apple.com Swift5.5 swift concurrency async await packages: 원래 Swift packages Index -> Swift Package manager 지원하는 패키지 찾을 수 있음 근데 이번 업데이트로 x.. 2021. 6. 9.
복합체 패턴 발표자료 2021. 6. 8.
WWDC Testing related Videos list 2015 https://developer.apple.com/videos/play/wwdc2015/406/?time=216 UI Testing in Xcode - WWDC 2015 - Videos - Apple Developer Xcode 7 introduces new UI testing features fully integrated into the IDE. Learn about the new APIs and how UI testing fits in with... developer.apple.com 2016 https://developer.apple.com/videos/play/wwdc2016/409/ Advanced Testing and Continuous Integration - WWDC 2016 - .. 2021. 5. 25.
[환경세팅] 예전 버전 cocoapods 설치 (1.9.1) macOS 10.15.X에서 이전 1.9.1 cocoapods 설치처음에 sudo gem install cocoapods -v 1.9.1 했더니 오류뜸Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.그래서 brew 로 설치해보라고 떠서brew 설치brew install cocoapods했더니 1.9,1 이 아닌 최신 버전이 설치됨gem 으로 돌파해야됨.(참고로 $ sudo xcode-select --install 로 cli 설치해도 안됨)문제.. 2021. 3. 31.
RxSwift background knowledge 1. RxSwift 또는 Reactive Extension의 히스토리 (Functional Reactive Programming: FRP) 1997 1997년 Functional Reactive Animation을 만들기 위해 개념이 고안됨 animation을 DSL 언어로 설명하고자 하는 목표가 있었음 animation의 움직임을 벡터화 하여 렌더링 타임에 샘플링을 완료할 수 있는 성능을 가짐 (60images/second) 예시는 jonaschapuis.com/wp-content/uploads/2017/09/ReactiveProgrammingOriginsAndEcosystem.pdf 슬라이드 참조 2009 에릭마이어가 FRP개념을 바탕으로 MS .NET의 Reactive Extension을 개발 20.. 2021. 3. 25.
Swift 아키텍쳐 노트 아는 형님이 설명해주신 방법이 좋은 것 같아서 정리해 본 페이지 MVC Controller에 코드 다 때려박음 Model View ViewModel MVVM 에서 View와 관련없는 로직은 ViewModel에 위치하게됨 View 와 ViewModel 은 binding이 이루어짐 (rxSwift, Combine 이용) Massive Controller 에서 Massive viewModel된 느낌 Model View ViewModel + Coordinator 화면전환 역할을 ViewController 에서 분리해서 Coordinator에 적용 화면 전환을 해결해 준 Coordinator 패턴 리액티브 프로그래밍(Reactive Programming)을 사용하기 위해, VIPER 패턴으로 되어 있는 앱 구조를.. 2021. 3. 3.
👨‍🎓 드림인 프로젝트 수료 및 앱 출시! 오늘은 드림인 아카데미 교육과정 수료식이 열리는 날이다. 처음 드림인을 지원해 합격한 뒤 짧지 않은 시간동안 매주 평일에는 온라인 강의를 듣고 과제를 하고, 토. 일요일에는 2시간씩 실시간 강의를 들어야 했다. 한화 Dreamin iOS Academy 최종합격 후기 Connect your Dream > dreamin | 드림인" data-og-description="dreamin iOS Academy" data-og-host="dreamin.career" data-og-source-url="https://dreamin.career/academy/ios" data-og-url="https://dreamin.c.. haningya.tistory.com iOS 개발 경험이 있었기에 어려운 일정은 아니였지만 처.. 2020. 11. 28.
#18 Custom Publishers & Handling Backpressure 보호되어 있는 글 입니다. 2020. 11. 3.
#17 Schedulers 책을 읽어오면서 scheduler 를 파라미터로 사용하는 operator 들을 많이 보았다. 대부분의 경우 간편하게 DispatchQueue.main을 사용했었다. 개발자로써 DispatchQueue뿐만 아니라 global, concurrent queue 나 serial dispatch queue도 사용해 봤을 것 이다. 이번 장에는 이러한 dispatch queue 에 대해 전반적으로 알아본다. 그런데 왜 Combine 비슷한 새로운 컨셉이 필요할까? 실제 세상으로 나가서 combine schedulers가 어디에 쓰이는지 알아보자 이번 챕터에서는 왜 schedulers 컨셉이 등장했는지 알아본다. 어떻게 Combine 이 asynchronous event 와 action을 쉽게 다룰수 있는지 알아본다.. 2020. 11. 3.
#Chapter15 In Practice: Combine & SwiftUI SwiftUI 의 장점에 대한 내용 Declarative syntax view 는 계층에 따라 시각적으로 쉽게 파싱할 수 있다. (Hstack 안에 VStack 등등) view는 타입에 따라 파라미터를 가진다. (Text - String, HStack - spacing) view는 modifier들을 가진다. Cross-platform 각 플랫폼별 UI를 개발하는 통일화된 방법을 제시한다. 각각 플랫폼별 특징에 따라 튜닝만 해주면 된다. (Picker Controller) New memory model (view controller out) data model 과 view 를 싱크맞춰주기 위해서 view controller 가 필요했다. SwiftUI는 화면에 표시되는 UI 는 일종의 데이터에 대한 함수.. 2020. 11. 2.
#12 Key-Value Observing [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0] 변화를 다루는 것은 Combine 의 핵심기능 입니다. subscriber를 통해 Publisher 를 구독(subscribe) 하여 비동기적 event 를 처리할 수 있게 해줍니다. 이전 챕터에서 assign(to:on) 을 배웠습니다. assign()은 주어진 객체에 대한 프로퍼티의 값(value)을 publisher가 매번 새로운 값을 emit 할 때 update 시켜줄 수 있습니다. 하지만 단 하나의 변수에 대해 변화를 관찰하려는 경우는 어떨까요? Combine 은 이런 경우에 있어 몇가지 옵션을 제공합니다. KVO-compliant를 만족하는 모든(A.. 2020. 10. 30.
#9 Networking [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0]프로그래머로써 networking 작업을 많이 하게됩니다.backend 와 통신fetching datapushing updatesencoding and decoding JSONcombine은 이런 흔한 작업들을 declaratively 하게 수행할 수 있는 API 를 제공합니다.이런 API 들은 현대 앱의 2가지 부분에 도움을 줍니다.URLSessionJSON encoding and decoding through the Codable protocolURLSession extensionsURLSession은 network data 전송 작.. 2020. 10. 28.