letswiftconf / newsletter

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

제28호 (2021년 3월 28일 발행) #31

Closed godrm closed 3 years ago

godrm commented 3 years ago

꼭 앱을 만들어야겠다.고 다짐해봅니다 ㅋㅋㅋ

oozoofrog commented 3 years ago

뉴스레터에서 공유해주신 https://medium.com/geekculture/why-swift-reference-types-are-bad-for-app-startup-time-90fbb25237fc 글을 염염님께서 번역해주셨습니다. https://onelife2live.tistory.com/50

godrm commented 3 years ago

일반

요즘 애플 개발 환경과는 좀 먼 이야기지만, 매킨토시 시스템을 오브젝트 파스칼로 개발하던 시절이 있었습니다. 파스칼이란 언어가 나온지 50년이 되었고, 애플 오브젝트 파스칼 이후에 명성을 이어가고 있는 것은 델파이 Dephi 뿐이네요. 오픈소스로 남은 Free Pascal 라자루스 Lazarus 프로젝트(https://www.lazarus-ide.org)가 있긴 합니다만 여전히 제한적입니다. 파스칼 컴파일러 권위자였고 볼랜드에서 델파이를 만들던 앤더스 헤즐버그가 MS로 가서 C# 과 TypeScript를 만든 것도 파스칼이 영향을 준 것이라고 할 수 있겠네요. https://blogs.embarcadero.com/50-years-of-pascal-and-delphi-is-in-power/

빅서 플랫 디자인은 왜 별로인가 https://erik-engheim.medium.com/big-sur-sucks-817cba889376

구글도 애플처럼(?) 7월1일자로 $1M(USD)보다 매출이 작은 회사는 수수료를 50% 할인한다고 합니다. https://android-developers.googleblog.com/2021/03/boosting-dev-success.html

플러터가 iOS에서 약간 문제가 있다는 글을 소개했었는데요, 맥을 지원하는 플러터2가 나왔습니다. https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65

애플

장루이 가세 월요노트에 애플에 대한 컬럼이 올라왔습니다. 애플 조직 문화에 대해 이야기하고 있습니다. 맨 아래 하드웨어 설계부터 엔지니어링, 디자인과 소프트웨어, 서비스까지 프로젝트 팀으로 움직이는 문화를 잡스의 값진 유산이라고 말이죠. HP나 IBM처럼 크게 실패하고 무너지지 않을까요? 자동차 업계에 영향을 줄 수 있겠지만, 애플 리더십 페이지를 보면서 여전히 다양성이 부족하다고 말합니다. MS나 구글과 직접 비교하는 것은 아니지만, 이사회 멤버나 VP들을 보면 대부분 엘리트 백인만 올라가는 거 아니냐고 할 수도 있습니다. https://mondaynote.com/apple-failure-modes-a5c9e1c9ffb0

언어 : Swift

지난 뉴스레터에 공유했던 스위프트 참조 타입이 앱 시작시간에 나쁜 이유를 염염(Flip)님께서 번역해주셨습니다. https://onelife2live.tistory.com/50 원문 링크 https://medium.com/geekculture/why-swift-reference-types-are-bad-for-app-startup-time-90fbb25237fc

@dynamicCallable 만드는 쉬운 방법 https://medium.com/codex/swift-dynamiccallable-made-simple-97ae47dce6fb

Autoclosures 파헤치기 https://medium.com/codex/swift-demystifying-autoclosures-dc106e4bc04a

Swift 개발자를 위한 Objective-C https://medium.com/swlh/objective-c-for-swift-developers-ca8196e914ff 저도 요즘 이런 내용을 정리하고 있는데, 스위프트만 배웠던 분들을 위해서 옵씨 이야기를 해야하는 시점이 된 것 같습니다.

$0 축약 변수 사용하지말자 https://stevenpcurtis.medium.com/stop-using-0-as-a-shorthand-parameter-in-swift-bf6618b7a469

여러 값을 기준으로 정렬하기 https://medium.com/macoclock/how-to-sort-by-multiple-properties-in-swift-5e08b1ef1f23

스위프트는 안전하게 동작하도록 명시적으로 fallthrough를 지정하도록 하고 있죠. 간단하지만 fallthrough를 사용해야 하는 경우를 소개합니다. https://medium.com/geekculture/swift-5-fallthrough-used-cases-you-must-know-c31a135c7c08

값 타입을 복사할 경우 컴파일러가 실제로 값이 바뀔 때 메모리를 복사하는 Copy-on-write 최적화에 대한 글입니다. 상대적으로 메모리 크기가 큰 값 타입일 경우에 Box를 두고 수동으로 관리하는 게 필요하다는 취지입니다. https://shobhitgupta-27686.medium.com/copy-on-write-optimization-97e43eb8af01

Result 타입 활용하기 https://stevenpcurtis.medium.com/woot-supercharge-result-type-using-swifts-get-c93dbbd88563

스위프트 메타-타입 소개 https://medium.com/swiftcraft/introduction-to-swift-metatypes-21949842d7a

rethrows 키워도 활용하기 https://www.avanderlee.com/swift/rethrows/

연관값을 가지는 enum에 대한 Codable 제안을 채택하고 나서, 포럼에서 serialization에 대해 개선할 사항을 논의하고 있습니다. 살짝 둘러보니 ByteBuffer나 ASN.1 처럼 가변데이터 표현 방식까지 논의되고 있네요. https://github.com/apple/swift-evolution/blob/main/proposals/0295-codable-synthesis-for-enums-with-associated-values.md https://forums.swift.org/t/serialization-in-swift/46641

키워드 치트 시트 https://medium.com/codex/swift-cheat-sheet-special-keywords-c72c0d82ccfd

설계 구조 : 패턴

MVVM 구조에서 단방향으로 뷰 업데이트하는 방법들 https://tonny.medium.com/how-to-update-view-in-swift-mvvm-3d8e57d0386

선언적으로 실제 앱을 만든다면 이런 느낌이다 https://decodemeester.medium.com/fully-declarative-swift-for-real-world-projects-9b6ee9403f4c

에어비앤비에서 SwiftUI 이전에 만든 선언형 UI 프레임워크 epoxy https://medium.com/airbnb-engineering/introducing-epoxy-for-ios-6bf062be1670 저장소 https://github.com/airbnb/epoxy-ios

단방향 아키텍처 둘러보기 https://fmo91.medium.com/unidirectional-architectures-and-time-traveling-in-swift-i-55085d31eff2

뷰 프로그래밍 : SwiftUI

SegmentedPickerStyle 피커 구현하기 https://medium.com/swift-productions/swiftui-implement-picker-segmentedpickerstyle-babf739eda1c

UIKit처럼 애니메이션 지원하는 서치바 만들기 https://prafullkumar77.medium.com/building-pure-swiftui-search-bar-with-uikit-like-animations-2480724e8c39

기초적인 접근성 다루기 https://jyothishjohnson.medium.com/enhance-basic-accessibility-of-your-swiftui-views-54f9b4b5460c

오디오 녹음 앱 만들기 https://medium.com/swlh/audio-recording-in-swiftui-mvvm-with-avfoundation-an-ios-app-6e6c8ddb00cc

세로 페이징 화면 스크롤 구현하기 https://blog.prototypr.io/how-to-vertical-paging-in-swiftui-f0e4afa739ba

드롭다운 피커 구현하기 https://levelup.gitconnected.com/creating-a-dropdown-picker-1067c509b327

트위터 인증 구현하기 https://crystalminds.medium.com/how-to-implement-twitter-api-v1-authentication-in-swiftui-2dc4e93f7a82

코어 데이터 활용을 위한 가이드 https://tanaschita.medium.com/quick-guide-to-using-core-data-with-swiftui-d8a64bb39635

복잡한 List 화면 만들기 https://betterprogramming.pub/building-a-complex-list-in-swiftui-196a6989726b

인앱 Tip 저금통 구현하기 https://betterprogramming.pub/adding-a-tip-jar-with-revenuecat-in-swiftui-717a0d4b60c

봉주르 + 소켓 연결하기 https://betterprogramming.pub/bonjour-over-a-network-framework-b533a714b8f5

스위프트 5.5버전 async/await https://betterprogramming.pub/async-and-await-in-swift-5-5-5c8abb9f4f85

디스클로저 그룹으로 표시하거나 감추기 https://levelup.gitconnected.com/how-to-show-and-hide-content-with-disclosuregroup-using-swiftui-dae78e319afc

의존성 주입하기 https://tom-van-der-spek.medium.com/swiftui-dependency-injection-8ac6d316f6c5

뷰 프로그래밍 : UIKit

CAGradientLayer Swift https://medium.com/doyeona/cagradientlayer-swift-2ad0dd548309

온보딩 화면 구현하기 https://medium.com/swlh/onboarding-screens-in-ios-2b68bc9fad96

iOS 14+ 이후에 UIButton 액션을 클로저로 처리하기 https://rizwan95.medium.com/replacing-selectors-with-closures-in-uibutton-8a809bd45cbd

스크롤뷰에 스택뷰 임베딩하기 https://zirkler.medium.com/uikit-programmatically-embed-a-uistackview-in-an-uiscrollview-using-autolayout-fd4e97ce8f26

노티피케이션 화면 커스텀으로 만들기 https://blog.usejournal.com/customizing-the-appearance-of-notifications-in-swift-7cf36a544f98

프레임워크

OperationQueue 다루는 7가지 방식 https://betterprogramming.pub/the-beauty-of-operationqueue-in-swift-8398fc5fb013

찰스 Charles로 나만의 백엔드 구축하기 https://stevenpcurtis.medium.com/create-your-own-backend-for-swift-using-charles-a7e81411a557

SIMD 타입 활용하기 https://medium.com/@lucianoalmeida1/playing-around-with-simd-types-in-swift-e5f57a066bbf

무한 반복되는 JSON 구조 디코딩하기 https://alexalmostengineer.medium.com/decoding-json-with-endless-nesting-in-swift-recursion-in-use-8538f206d626

펜슬킷으로 드로잉 앱 만들기 https://pedroalvarez-29395.medium.com/pencilkit-building-a-complete-drawing-app-with-a-few-lines-of-code-e3d3ba001dff

RxSwift로 네트워크 요청다루기 https://medium.com/ne-digital/handling-network-requests-in-rxswift-f58879854de7

개발환경

새로운 빌드 시스템으로 만들었던 llbuild에 이어서 bazel에서 영향을 받은 llbuild2가 나온다고 합니다. gcc 시절에 지원하던 분산빌드가 gRPC 기반으로 가능해질 것 같습니다. M1 맥미니 쌓아놓고 빌드서버를 구성할 수 있는 날이 오겠네요. https://asifmohd.github.io/ios/2021/03/11/xcbuild-debug-info.html llbuild2 저장소 https://github.com/apple/swift-llbuild2

시뮬레이터 더 잘쓰려면 알아둘 것들 https://www.andyibanez.com/posts/getting-to-know-the-simulator-better 시뮬레이터 상태바를 바꾸는 방법이 나오는데 참고할 자료 https://github.com/shinydevelopment/SimulatorStatusMagic

XcodeSpy라는 개발자도구를 공격하고 백도어를 심는 말웨어 https://labs.sentinelone.com/new-macos-malware-xcodespy-targets-xcode-developers-with-eggshell-backdoor

빌드 환경과 스킴으로 다양한 빌드 조건 구성하기 https://medium.com/swlh/playing-with-build-configuration-in-xcode-to-separate-environment-855d4397bcda

코딩스타일 적용을 위해서 SwiftLint 적용하기 https://batuhangobekli.medium.com/apply-swift-style-and-conventions-with-swiftlint-3cd88dcd2703

M1에서 CircleCI와 Alpine를 위한 멀티 아키텍처 도커 빌드하기
https://betterprogramming.pub/setting-up-a-multi-arch-docker-build-with-circleci-and-alpine-for-your-apple-m1-ba739ef1f754

테스트

유니버설 링크 로컬에서 테스트하기 https://santoshbotre01.medium.com/test-universal-links-locally-ios-e0d7a36332a5

기타 / 오픈소스

iOS 14.5에서 SF Symbols 변경사항 https://hacknicity.medium.com/sf-symbol-changes-in-ios-14-5-3fb3ed068241

iOS 개발자를 위한 리소스 모음 - 디자인 도구, 개발 도구, 앱과 치트 문서, 학습 자료 등을 정리해줬습니다. https://6ary.medium.com/50-helpful-ios-developer-resources-3d206073757c

iOS 개발자 인터뷰 QA 3편 (1-2편도 바로 붙어있습니다) https://mdcode2021.medium.com/part-3-ios-interview-preparation-questions-and-explanations-e6fc5e391351

godrm commented 3 years ago

간만에 블로그를 썼네요. 스위프트 증분빌드는 어떻게 동작하고 있나 살펴봤습니다. https://medium.com/@jungkim/스위프트-증분-빌드는-어떻게-동작하고-있나-b3c1512a1689

godrm commented 3 years ago

제28호 발행했습니다. https://stib.ee/QbC3