letswiftconf / newsletter

레츠스위프트 뉴스레터 아카이브
MIT License
447 stars 10 forks source link

제46호(2021년 12월 26일 발행 예정) #49

Closed godrm closed 2 years ago

godrm commented 2 years ago

크리스마스 연휴라서 좀 늦을수도 있겠네요

oozoofrog commented 2 years ago

@godrm 애플도 안쉬는데요!?!

godrm commented 2 years ago

@godrm 애플도 안쉬는데요!?!

버럭.. 좀 쉬라고 해주세요

godrm commented 2 years ago

민소네님 블로그 SwiftPM로 RxSwift 사용할 때 RxBlocking, RxTest를 유닛테스트에서 사용하기 http://minsone.github.io/ios/mac/ios-swiftpm-rxblocking-rxtest-on-unit-test

godrm commented 2 years ago

애플

Swift Playgrounds 4 출시 https://developer.apple.com/news/?id=v868vy6e

하드웨어

애플과 인텔의 CPU 싸움의 승자는 우리다! https://medium.com/macoclock/the-apple-vs-intel-cpu-war-whos-winning-we-are-43aa1f976ee9

M1 Pro 맥북으로 개발 환경 호환성 https://blog.picnic.nl/m1-pro-macbooks-building-a-tech-foundation-a91362c17954

일반

iOS에 포함된 애플이 만든 바이너리 중에 Swift, SwiftUI 관련 통계입니다. (이걸 다 세어보다니...🤯) 요iOS 15 기준으로 4738개 바이너리가 배포되어 있고, 그 중에 Objective-C가 4195개, C++ 802개, C 365개, Swift 607개, SwiftUI 114개라고 하네요 https://blog.timac.org/2021/1219-state-of-swift-and-swiftui-ios15/

언어 : Swift

VSCode 전용 스위프트 패키지 플러그인입니다. v0.1 초기 버전이지만, 툴체인이 깔려있으면 스위프트 패키지로 프로젝트를 생성한 다음 실행하는 정도는 잘 됩니다. LSP도 지원해서 자동완성도 되고, CoreLLDB 플러그인과 함께 디버깅도 지원해서 간단한 코드를 테스트하는 용도로 아주 좋네요. https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang

ARC와 소유권(ownership)에 대한 성능 개선 로드맵이 포럼에 올라왔습니다. 번역해서 정리하고 싶었는데 바빠서 못했습니다 ㅎㅎ 다음 기회에 한 번 소개해보도록 하겠습니다. 요약하면 문법 표현에는 변함이 없지만 릴리스모드에서 예측가능하고, 소유권 이전(move)할 때도 성능 개선하는 것을 목표로 한다고 합니다. https://forums.swift.org/t/a-roadmap-for-improving-swift-performance-predictability-arc-improvements-and-ownership-control/54206

파운데이션에 포함된 URL 개선방향에 대한 소개도 올라왔습니다. https://forums.swift.org/t/foundation-url-improvements/54057

스위프트 알고리즘 패키지 소개 https://medium.com/@jamesbalsa/swift-algorithm-package-pt-1-880892bce3fd

Swift Playgrounds 4 첫 인상 - 드디어 아이패드에서 앱을 만들수 있는 시대가 시작됐습니다. https://maeganwilson.medium.com/swift-playgrounds-4-initial-thoughts-b0951547321b

Swift Playgrounds 소개글 같이 읽어보세요 하지만 아쉽게도 코드 편집기 상에 한글 받침이 들어가지 않더군요 ㅜㅜ https://www.hackingwithswift.com/articles/244/swift-playgrounds-4

Swift 5.5 - AsyncSequence 이해하기 https://betterprogramming.pub/understanding-asyncsequence-in-swift-5-5-ed2f7d218337

읽기 전용 프로퍼티 선언하기 https://medium.com/@Chandrachudh/read-only-properties-in-swift-c90faa6f999e

Mirror로 Reflection 다루기 https://www.avanderlee.com/swift/reflection-how-mirror-works/

스레드와 동시성 다루기 https://khanumair-9430.medium.com/threads-concurrency-in-swift-457cea475e5a

트리 데이터 구조 구현하기 https://chsherbak.medium.com/implement-tree-data-structure-in-swift-a720dbe67636

Self, Self.Type, self 차이점 https://chsherbak.medium.com/self-self-type-self-in-swift-ccd9025b491f

코드 품질을 높여주는 에러 처리 방식 https://medium.com/@aspteslia/improving-your-swift-code-quality-using-error-handling-mechanism-2e2b383b1ceb

ABI stable 라이브러리 만들기 https://albgarciam.medium.com/creating-abi-stable-swift-libraries-fe82aaa51250

indirect enum 소개 https://medium.com/geekculture/what-is-indirect-enum-in-swift-f4da5a6a9199

Task 비동기 방식으로 딜레이 주기 https://www.swiftbysundell.com/articles/delaying-an-async-swift-task/

설계 구조 : 패턴

UIKit 프로젝트를 선언적인 구조로 리팩토링하는 과정을 보여주는 글입니다 DeclarativeUIKit, DIWrapper, LoaderView 오픈소스 패키지를 활용하고 있습니다 https://bboyfat12.medium.com/declarative-uikit-mvvm-di-combine-propertywrappers-part-1-43532948332d https://github.com/bboyfat/DeclarativeUIKit https://github.com/bboyfat/DIWrapper https://github.com/bboyfat/LoaderView

데이터 모델 구조만들기 https://medium.com/@jlwarfield/constructing-a-swift-data-model-for-dummies-5b79fbd22a2a

클린 아키텍처에서 출발해서 선언적인 표현으로 개선한 Khipu라고 부르는 자기만의 구조를 설명하는 상당히 긴 글입니다. https://blog.devgenius.io/khipu-rapid-and-sustainable-software-creation-in-swift-using-engineering-and-science-principles-312a933cce57

관심 사항 분리해서 구현하기 https://betterprogramming.pub/implementing-cross-cutting-concerns-in-ios-a312fc72f798

포인트프리 SCA에 영감을 받은 2022년에 도전할 모듈화된 앱 구조 https://alejandromp.com/blog/ios-app-architecture-in-2022/

뷰 프로그래밍 : SwiftUI

다음 프로젝트는 SwiftUI로 도전해볼까? 결론은... 스크롤하고 60초후에 확인해보세요 https://mahmudul-razib.medium.com/swiftui-is-it-ready-for-my-next-project-9699a4188623 똑같은 주제 글인데 결론이 조금 다릅니다. 같이 읽어보세요 :) https://medium.com/codex/is-swiftui-suitable-for-production-4a92eb55751b

순수하게 SwiftUI로만 파티클 효과 구현하기 - 이거 엄청 느려질 것 같은 느낌이긴 합니다 https://betterprogramming.pub/a-particle-effects-using-pure-swiftui-dc55edb6b26a

SwiftUI 러닝커브를 다른 언어와 비교해줍니다 https://luomein.medium.com/swiftui-learning-curve-580eab9486dc

iOS 15에서 새로운 SwiftUI https://medium.com/orion-innovation-turkey/whats-new-in-swiftui-for-ios-15-15f7d2214aaa

뷰 Modifier를 수정해서 데이터 감추거나 placeholder를 처리하는 방법입니다 https://gabth.medium.com/the-redacted-view-modifier-in-swiftui-eeff0c145e04

제네릭으로 미리보기 공통코드(Boilerplate) 줄이기 https://betterprogramming.pub/use-generics-to-reduce-swiftui-previews-boilerplate-7924bc763ba5

Gousto 개발팀의 Widget 구현하기 https://medium.com/gousto-engineering-techbrunch/goustos-ios-order-widget-1cf631124a81

주소록 저장하기 https://levelup.gitconnected.com/how-to-save-contacts-on-swiftui-80ab70eb4da0

Empty State 빈 상태 표시하기 위한 Modifier https://betterprogramming.pub/using-swiftui-view-modifiers-to-display-empty-state-5145f220de56

확인용 다이얼로그 다루기
https://betterprogramming.pub/confirmation-dialogs-in-swiftui-63758a57da5c

뷰 프로그래밍 : UIKit

iOS 15에서 UI 관련 마이그레이션 경험 - 내비게이션/탭바, 상태바, 테이블뷰 헤더와 풋터 등 처리 https://medium.com/@sandeep.aggarwal/upgrade-to-ios-15-8c8a076c8154

늘릴 수 있는 테이블뷰 헤더뷰 https://medium.com/@thomsmed/stretchy-table-header-view-ios-635a0e95d3c5

NIB과 스토리보드 피하기 https://blog.devgenius.io/avoid-nib-and-storyboards-in-ios-2b75dc764b26

UIPickerView 가이드 https://stevenpcurtis.medium.com/the-uipickerview-guide-swift-tutorial-7803ceba7062

Leading, Trailiing 제약과 Left, Right 제약 차이점 https://medium.com/@ahmed044/leading-trailing-vs-left-right-constraints-c315e6f92aa9

UI기반 Cell 모델 https://medium.com/ninetyniners/cell-models-based-ui-in-ios-development-b3a2be447f7a

ViewModel로 유연한 UILabel 만들기 https://betterprogramming.pub/create-flexible-components-in-swift-dc50a1742bb3

다양한 이미지 렌더링 모드 https://sarunw.com/posts/what-is-image-rendering-mode-in-ios/

레이아웃 빌더 라이브러리 비교 https://medium.com/eureka-engineering/you-dont-need-swiftui-to-enjoy-its-layout-syntax-7752fc45caef 비슷한 고민을 했던 당근마켓 개발팀 오픈소스도 같이 보세요 https://github.com/daangn/KarrotFlex

프레임워크

멀티 스레드 다루기 위한 OperationQueue https://khanumair-9430.medium.com/swift-operation-queue-803ec4e54b5b

Mutex 벤치마크 https://medium.com/@sergebouts/swift-mutex-benchmark-b21ee293d9ad

URLSession, Combine, AsyncAwait https://betterprogramming.pub/urlsession-combine-and-asyncawait-96981923a7ec

NWPathMonitor로 인터넷 연결 확인하기 https://ataberkturan.dev/check-internet-connectivity-with-nwpathmonitor-in-swift-a54c6f80f4c2

NSPredicate를 보내고, Realm Swift Query API 활용하기 https://medium.com/realm/goodbye-nspredicate-hello-realm-swift-query-api-a6354c02ae90

트래킹 허락 요청하기 https://blog.devgenius.io/request-tracking-authorization-in-ios-9af50727b885

RxSwift로 뷰컨트롤러 사이에 데이터 전달하기 https://khanumair-9430.medium.com/using-rxswift-to-pass-data-between-viewcontrollers-12c984c4ac87

터치 아이디와 페이스 아이디 추가하기 https://the-sudhanshu.medium.com/add-touch-id-face-id-in-swift-aea75e0e376f

프로토콜로 코어 데이터 공통코드 제거하기 https://medium.com/@arulmurugan_s/remove-coredata-boiler-plate-using-protocol-fd61997f5086

MapKit에 도형 그리기 https://jajackleon.medium.com/ios-macos-mapkit-swift-drawing-shapes-on-map-f8f4b4d314ee

Network 프레임워크로 UDP Listener 구현하기 https://medium.com/@michaelrobertellis/how-to-make-a-swift-ios-udp-listener-using-apples-network-framework-f7cef6f4e45f

Diffusion 서버로 재접속 처리하기 https://pushtechnology.medium.com/what-is-the-reconnection-strategy-with-diffusion-and-ios-apps-54f765dbad4a

[샌드버드 블로그] CallKit과 샌드버드 라이브러리로 영상통화 앱 만들기 https://medium.com/codex/make-a-video-call-app-with-ios-callkit-and-sendbird-calls-95b86ddbc908

MFMailComposeViewController 떠나보내기 https://chris-mash.medium.com/goodbye-mfmailcomposeviewcontroller-4d9778e8d862

SSL Pinning 다루기 https://mahmudul-razib.medium.com/ssl-pinning-in-ios-a985895c4414

iOS15에서 이미지 로딩하는 API들 https://pspdfkit.com/blog/2021/ios-15-image-api/

커스텀 파입을 위한 SceneStorage https://useyourloaf.com/blog/scenestorage-for-custom-types/

개발환경

Xcode 프로젝트 충돌 자동으로 해결해주는 도구 Kintsugi https://blog.kulman.sk/automatically-merge-xcode-project-conflicts/

iOS 개발자에게 도움되는 30가지 팁 https://www.fadel.io/blog/posts/30-tips-to-make-you-a-better-ios-developer/

SPM으로 Mock 파일 관리하기 https://medium.com/@petrachkovsergey/how-to-organize-mock-files-with-spm-6213f55f4da9

CircleCI로 Xcode 빌드데이터 캐싱해서 빌드 속도 60% 개선하기 https://medium.com/@iMientus/circleci-60-faster-builds-use-xcode-deriveddata-for-caching-96fb9a58930

iOS 앱 코드리뷰하기 https://blog.devgenius.io/code-review-for-ios-applications-1b10e69b239e

Fastlane으로 iOS앱을 위한 CI/CD 설정하기 https://medium.com/bliblidotcom-techblog/continuous-integration-and-delivery-for-ios-8a0655cf44e

코드 생성도구 활용하기 https://medium.com/@akshaynhegde/demystifying-code-generation-on-ios-a538f1894f1e

테스트

iOS UI 테스트를 위한 Page Object 패턴 https://hasancanakgunduz.medium.com/page-object-pattern-for-ios-ui-testing-a098fc5dbc61

스위프트로 단위 테스트하기 https://medium.com/swift-blondie/unit-testing-in-swift-7c08dd7240ef

비동기 함수 단위 테스트를 위한 가벼운 의존성 주입 https://www.swiftbysundell.com/articles/dependency-injection-and-unit-testing-using-async-await/

XCUITest 병렬 테스트로 테스트 시간 줄이기 https://medium.com/@engenious.io/ios-xcuitest-parallelization-from-hours-to-minutes-6160426a034a

도구/오픈소스

iOS 시뮬레이터에서 동적으로 속성을 변경할 수 있도록 진화(?)시키는 Sherlock 이라는 도구 - 개인 $49 유료입니다 https://blog.devgenius.io/ios-simulator-superpowers-with-sherlock-406ca8317304

스위프트로 블록체인 빌딩하기 2탄이 올라왔네요. nonce와 채굴 관련 부분을 구현하는 단계네요 https://medium.com/kinandcartacreated/building-a-blockchain-in-swift-part-2-aa701d52955c

JohnSundell이 만든 iOS 15 전용 Async 관련 API를 호환하도록 대체해주는 오픈소스 AsyncCompatibilityKit https://github.com/JohnSundell/AsyncCompatibilityKit

여러 버전 Xcode를 설치하거나 관리하는 도구 xcinfo https://swiftpackageindex.com/xcodereleases/xcinfo

디자인

영감을 주는 앱 디자인 #37 | #36 https://theymakedesign.com/app-design-inspiration-37-cd9d7a8ea803 https://theymakedesign.com/app-design-inspiration-36-a2e8003259b

영감을 주는 앱 개발 #106 | 105 https://theymakedesign.com/app-development-inspiration-106-ecfd7a559439 https://theymakedesign.com/app-development-inspiration-105-8859932467e0

godrm commented 2 years ago

2021년 마지막 뉴스레터 제46호 발행했습니다 https://stib.ee/EHW4