2019 Monthly I Learned - kirseia/study GitHub Wiki
꾸준할 수 있을것인가...
- Today I Learned (TIL)은 무리일것 같아서 월별로 -_-);
2019.12
- 한글 유니코드 조합/분리
- iOS 디스크 용량 부족 테스트하기
- Context Menu Tutorial
- 비개발 - 2020년 팬톤 컬러
- 기본으로... SOLID 원칙
- iOS 무선 디버깅
- 앱 진단
- InApp Rating & Review
- UITest 할 때 시간 단축하는 법
- AVFoundation 의 재밌는 것... -_-)
AVMutableCompositionTrack.insertTimeRange 는 emptyTimeRange를 밀어내고 'insert' 된다.
emtpyTimeRange가 0~50초가 있을 때
insertTimeRange 를 10~20초 구간에 하면... 전체 timeRange는 0~10(empty), 10~20(insert된..), 20~60(empty)가 되버림
시작 시간 순서대로 insert 하지 않으면 emtpyTimeRange가 밀려나는 것을 확인할 수 있습니다...
- ViewController 가 최초로 보여질 때 처리
- collectionView.reloadItems 애니메이션 없이 하기
UIView.performWithoutAnimation {
self.collectionView.reloadItemsAtIndexPaths(indexPaths)
}
- collectionView.scrollToItem 애니메이션 길이 조정
UIView.animate(withDuration: 5, animations: { [weak self] in
self?.collectionView.scrollToItem(at: IndexPath(item: 10, section: 10), at: .middle, animated: false) // false 가 핵심
})
2019.11
- 아이폰에서 개발 데이터 추출하기
- SwiftUI를 이용한 UIKit View Preview만들기
- Swift 에서 MARK의 의미
- 숫자 애니메이션 (공항 항공편 보드같은...?) 처리
- 다크모드를 위한 컬러 콘트라스트
- Unused image resource 찾기
- Unused Code 찾는 다른 방법
2019.10
- SwiftUI AVPlayer - Progress Binding
- swiftui traits
- performance 측정하기 MetricKit
- cpu / gpu / framerate / location / celluar condition / memory / disk io ...
- 코드 리뷰 팁 - 무엇을 볼 것인가
- 신규입사자 조직안착 과정
- OpenCV
- UX 연구, 이름/성 보다는 FullName 을 써라
2019. 9
- CloudKit
- SwiftUI in Playgrounds
- Full Text Search 하기 - SQL을 써라, Core Data는 쓰지마
- DB Query Error 찾기 - https://www.eversql.com/sql-syntax-check-validator/ 를 활요하자
- AVAudioMix 에서 fade in out 할 때 0 -> volume n 으로 하고, n -> 0 으로 하면 pop noise 발생. 0.0001 -> n / n -> 0.0001 하면 괜찮음. - 는 안괜찮음. fade in 시작하기 전까지의 볼륨을 0 으로 세팅해야 함.
- Text가 어떤 언어인지 검사하기 - NLLanguageRecognizer
- 이모지는 텍스트 컬러 alpha가 적용되지 않는다 (어쩌면 당연한것) 이모지에 alpha 를 넣으려면 label.alpha 에 적용하자
- 변수/메소드 작명법
- 삽질 기록 Timer.scheduledTimer(withTimeInterval: ... , repeats: ...) 이 동작안했던 이유
- main thread 에서 등록하지 않아서 repeat이 되지 않았었음
- UIView animation 처리하는 다른 방법 - UIViewPropertyAnimator
- animation cancel 이 가능함, displayLink 와 타이밍을 맞출 수 있음
- https://www.thinkandbuild.it/quick-guide-animations-with-uiviewpropertyanimator/
- https://www.appcoda.com/interactive-animation-uiviewpropertyanimator/
- CollectionView DragDelegate/DropDelegate - WWDC Drag&Drop Articles
- Testability 높은 코드 작성하기
- SRP를 높이는 방법이기도 합니다.
- Sign in with Apple 정리 - qiita
- 개발자 채용때 어떤 점을 볼 것인가 - qiita 아티클
- Array 합치기 (https://stackoverflow.com/questions/25146382/how-do-i-concatenate-or-merge-arrays-in-swift)
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let flattenArray = [array1, array2].flatMap({ (element: [Int]) -> [Int] in
return element
})
- Custom Transition - ViewController
- Typographic
- URL 인코딩 옵션
- SHA1 생성하기
- VisionKit/Metal 이용한 사진 쌓기
- VisionKit 이용한 고양이 /문자 인식
- ARKit 을 이용한 FaceTracking
- Xcode 컴파일 속도 향상 팁
- var 보단 let 사용, final class 사용할 수 있으면 사용, let a = "a" 보다는 let a: String = "a" 사용 등.
- iOS 스플래시 이미지
- os 단에서 캐시됨, uiview 의 bg color 등은 캐시 안되는데 이미지 등은 캐시됨, 삭제 후 재부팅 하고 재설치해야 캐시된 걸 삭제 가능
- MVVM with Combine
2019. 8
-
iOS 앱 빌드했을 때 프레임워크, 리소스, 코드가 차지하는 용량 알기 - 나이스한 방법은 없다아...
-
파일에 한글 검색하기 '[가-힣]+' 정규식으로 검색
-
AVFoundation - Export 결과에 초록색줄
- width / height가 16으로 나눠지지 않는 숫자면 그럴 수 있다고 함
-
- Provider / Target / Endpoint로 구분, 각각의 역할을 잘 이해, 구현하면 됨
-
StackView에 뷰 추가하기
- addSubView가 아니라 addArrangedSubview를 사용해야 함, 삭제도 removeFromView말고 removeArragedSubview를 사용하기
-
AVAssetWriterInput 사용할때 isReadyForMoreMediaData 사용
- isReadyForMoreMediaData 가 KVO라서 위 링크처럼 사용하면 좀 더 효율적 (wait 코드 같은거 없이 처리 가능함)
2019. 7
- 사용하지 않은 코드 찾기 & 중복 코드 찾기 정리
- 사용하지 않은 코드 찾기
- 소스 중복코드 찾아내기 - 플러그인(?)
- Apple ID + Firebase 사용 - 일본어
- Swift 5.1 Collection Diffing - 일본어
- Swift 5.1 변화
- 다크모드를 위한 텍스트 컬러 계산하기 (배경색에 다른 텍스트 컬러 계산)
- Date 연산 읽기 쉽게 표현하기 - Calendar 사용하기
- NSDateFormatter 프리뷰
- Xcode Cache 제거하기
- 사용하지 않는 이미지 제거하기
- Carthage on Xcode run script build phase
- iOS Texture (metal, opengl...) 기본 컬러 포맷 - BGRA가 기본. rgba 로 하면 reorder 때문에 약간의 속도저하가 있다
- Network Framework - 영문
- UIKeyCommend - 단축키 (영문)
- 각종 포매터 정리 (영문)
- 앱 정기구독 결제 관련 정리 , 구현
- Encoding/Decoding in Swift (json codable)
- Xcode Project Renaming , 참고 2), 참고 3)
- LivePhoto Extract , 두번째
- Xcode11 변경 사항, 일본어
- CAEmitterLayer/색종이 뿌림 효과 레이어 만들기
- PropertyWrapper - Swift 5.1에 추가되는 기능
- NSObject.prepareForInterfaceBuilder()
- @IBDesignable 이 있을 때 object 생성 시점에 인터페이스 빌더가 호출함, 보여지기전 세팅 할 값들을 세팅 할 수 있음 (예제)
- TextKit
- iPad Apps for Mac
- iOS13 디자인 추가된 것
- Notification 사용
- 애플 앱스토어 앱 등록 방법
- 이미지에 Tint Color 바로 반영하기
- 한 줄 요약 - self.imageView.tintColorDidChange() 가 호출되어야 하는데 그냥 Storyboard에서 세팅하면 안되서 코드로 호출해주면 됨. 상속 받아서 awakeFromNib을 override 한 뒤에 세팅해주면 됨
- 다크모드에서의 Color 사용
- 오토레이아웃에서 leadingAnchor과 leftAnchor, trailingAnchor과 rightAnchor의 차이
- CollectionView Cell Reordering
- 핵심은 override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) 를 구현 하는 것
- 또는 https://www.raywenderlich.com/9477-uicollectionview-tutorial-reusable-views-selection-and-reordering 참고, UICollectionViewDragDelegate 를 활용
- 샘플
2019. 6
- ViewController 전환 애니메이션(트랜지션, Transition)
- 선언형(Declarative) vs 명령형 프로그래밍(Imperative)
- [weak self] 는 언제 쓸까?
- UIRefreshControl + UITable
- 맥에서 음성 읽기 기능 활용하기
- CloudKit
- iOS 13의 비전 라이브러리
- 이미지 유사도, 동물 디텍션, detection 추적 (depth camera 같은?), 세그멘테이션, 소리 분석, CIFilter 관련 변경 등등
- iOS Library Cheet Sheet
- Firebase Translate text with ML Kit on iOS
- 언어 모델이 다운되어있으면 오프라인도 가능
- Ref. https://qiita.com/iincho/items/383292240a04162b1e63
- iOS 13 변화점
- iOS 13부터 사용될 시스템 이미지 접근하기
- iOS 13의 Dark mode
- SwiftUI - 공부
- Combine Framework
2019. 5
- 5월은 프로젝트가 바쁘고 리프래시 휴가 관계상 거의 못 쓸거 같다 😭
- iOS layout update 가이드
- 버튼 디자인 가이드
2019. 4
- 에어비앤비의 근무수칙 과 포스트모템
- OverCurrentContext vs OverFullScreen modalPresentationStyle
- Slack Alternative
- swift 코드 템플릿 - 이런것도 잇네...
- XCode project template 만들기
- open vs public access control
2019. 3
- KeyPath List Observing
- Swift 5.0 출시 - 뭐가 바뀌었나
- 개인개발 방법론 변경 - Adobe XD사용
- Xcode Tip 정리버전
- Xcode Tool Tips
- iOS 비디오 PIP 재생 구현
- Swift: IndexPath 로 2d array 접근하기
- iOS 앱 호출 순서
- ReverseGeocode Hang 수정
2019. 2
- CoreAnimation 작업 툴 조사
- Array 에서 특정 시간에 포함된 아이템 모두 찾기
- 텍스트 그라데이션 넣기
- Youtube 영상 다운로드
- Moving Poster 리서치
- HEVC / HEIF 파일 처리
- ios10 에서 hevc 의 경우 사진에서는 로드 되는데 내가 만든 앱에서 로드가 안됨 (icloud 다운로드 실패)
- 다운로드 요청 할 때 PHVideoRequestOptions 에서 deliveryMode 를 highQualityFormat 으로 놓아서 그럼. automatic 으로 수정하면 됨. ios11 이상에서는 high / 그 아래는 automatic 으로 해도 되긴 함.
- 무료로 사용가능한 음악들
- 상업적 이용가능한 라이센스로 검색해서 사용하면 됨
- Ref. CC - https://creativecommons.org/licenses/by/3.0/deed.ko
- AVFoundation 스터디 로드맵
- (offline) geocoder
- MVVM 새로운 방식 - protocol oriented programming 과 결합
- MVVM
- PHAsset / AVAsset / UIImage / CIImage / CGImage / NSData 에서 위치 정보 가져오기
- clustering 알고리즘
- swiftformat 사용해보기
- 쓸만함. 헤더 지워주는거 쓸데없는것 정리해주는거 맘에 듬.
- swiftlint 랑 충돌(?)나는 것들은 옵션 맞춰줄필요 있음.
2019.1
- 로컬에 없는 iCloud Asset 처리
- Github에 블로그 올리기
- Github 페이지에 광고 올리기 (구글 애드센스)
- iOS VC
PresentedViewController - 자신이 호출한 VC
PresentingViewController - 자신을 호출한 VC
- Swift - Generic type vs Associated type
- 기타
Inbox
- clean swift - 정리하기
- viewDidLoad 에서 VC present 처리하기 - 추가로 글 써야함
- zenhub 알아보기
- https://developer.apple.com/documentation/foundation/datecomponentsformatter/unitsstyle
- [Template Image] ...
- WKWebView - 정리필요. 보고 있는 페이지 타이틀 보여주기, navigation history 가져오기, 페이지 제한 처리
- https://digitalleaves.com/blog/2017/07/drag-and-drop-on-ios/ <- 구현해보기