RealityKit의 4가지 기본 개념을 알아봅시다. - ARView - Scene - Anchor - Entity [1] ARView ARView는 augmented reality experience를 display 해주는 뷰입니다. [2] Scene Scene은 문서에서 'entity 모음을 들고 있는 container' 라고 표현하고 있습니다. 사전적 의미 그대로 장면이라고 이해하면 쉽습니다. Reality Composer를 보면 Scene을 추가할 수 있습니다. 이것은 Watermelon Scene 이것은 Bread Scene [3] Anchor Entity들이 위치하는 기준 바닥(?) 이라고 생각하면 됩니다. 모든 Entity들은 anchored 되어야합니다. Reality Composer를 보..
마틴 파울러 - 리팩터링 (2판) 의 10장 내용 중 좋았던 것들 기록 ✏️✏️ 10.4 조건부 로직을 다형성으로 바꾸기 조건부 로직(특히 switch문)을 다형성으로 바꾸는 것은 오브젝트에서도 많이 나온 내용이다. 어디서부터 시작할 지 막막할 수 있는 리팩토링인데, 리팩터링 과정을 절차화해주셔서 진행하기 쉽게 해주신 게 좋았다. [ 절차 ] (아래 절차는 책이랑 다르게 제가 순서를 조금 수정한 부분이 있습니다!) 1단계 다형적 동작을 표현하는 클래스들이 아직 없다면 만들어준다. 조건부 로직 함수를 슈퍼클래스로 옮긴다. (조건부 로직이 온전한 함수로 분리되어 있지 않다면 먼저 함수로 추출한다) 2단계 적합한 인스턴스를 알아서 만들어 반환하는 팩터리 함수도 함께 만든다. 호출하는 코드에서 팩터리 함수를 사..
[1] 문제 이런 스크립트를 만들고 tuple list나 string list를 복사해서 구글시트에 붙여넣으면 행이 나눠져서 들어가는 옵션이 있을 줄 알았는데 없는 것 같음ㅠㅠ 이렇게 한 행에 다 들어감,,, [2] 해결법 > Google Sheets API Sheets for Developers > Sheets API 를 사용해서 행단위로 넣어줄 수 있다. (참고: https://stackoverflow.com/questions/46274040/append-a-list-in-google-sheet-from-python) 근데 이 방법은 설치해야하는 패키지도 많고.. 간단하지 않아서 안하기로 함 [3] 해결법 > CSV 1. CSV 파일을 만들고 2. 구글시트에서 CSV 파일 열기 (참고: How to ..
[1] Focus System UIFocusItem 프로토콜은 item이 focused 될 수 있음을 의미합니다. UIFocusEnvironments 프로토콜은 focusable items들 간의 hierarchy를 정의합니다. UIView는 이 두개의 프로토콜을 채택하고 있습니다. 즉 모든 뷰는 focused 될 수 있으며, focused 될 수 있는 subviews를 가질 수도 있습니다. UIViewController는 오직 UIFocusEnvironments 프로토콜만 채택하고 있습니다. [2] Focusability canBecomeFocused 는 현재 뷰가 being focused 될 수 있는 지 여부를 나타내는 프로퍼티 입니다. 이 프로퍼티를 통해 focus engine 에게 view의 fo..
[Swift] async / await 동작원리 에서 이어집니다. WWDC 2021 - Meet async / await in Swift 중, async / await 에 대한 사용사례를 기록한 글입니다. [1] Async sequences for문에서도 await / async 를 사용할 수 있습니다. 자세한 내용은 WWDC 21 - Meet AsyncSequence / WWDC 21 - Explore structed concurrency in Swift 를 참고해주세요 [2] Testing async code 예전에 비동기 테스트를 하려면 expection을 setting하고 expection.fulfill 도 해줘야하고 wait도 불러줘야하고 불편했습니다. 하지만 async를 쓰면 불편한 것들이 싹..
[Swift] async / await 등장배경 에서 이어집니다. WWDC 2021 - Meet async / await in Swift 중, async / await 에 대한 소개를 기록한 글 입니다. [1] async / await 이제 async / await 을 사용한 버전을 살펴봅시다. function에 completionHandler를 넘겨주는 대신 function에 async를 표시해줬습니다. 아래 함수처럼 throws 앞에 async를 적어줘야합니다. (다른 위치에 적으면 function이 throws 되지 않는다고 합니다) async throws를 표시한 저 함수는 어떻게 동작할까요? - thumbnail이 성공적으로 받아와지면 thumbnail은 simply return 됩니다. - 하..
Time Format 중 Hour를 헷갈렸어서 정리 [ 요약 ] - HH: 24 hour format / 무조건 2자리 (필요할 경우, 앞에 0 붙여줌) - hh : 12 hour format / 무조건 2자리 (필요할 경우, 앞에 0 붙여줌) - H : 24 hour format / 1~2 자리 - h: 12 hour format / 1~2 자리 [ 실험 ] 우선 플레이그라운드를 열고 준비를 합니다. Case 1. let sampleDate = date(year: 2021, month: 7, day: 5, hour: 22, minute: 30)! print(DateFormatter.time_HHmm.string(from: sampleDate)) // 22:30 print(DateFormatter.tim..
[CleanSwift] 클린스위프트(Clean Swift)에 대해 알아보자 에서 이어집니다. Clean Swift HandBook 에서는 CleanStore라는 예제 를 만들기 전에 템플릿에 대해 쭉 설명을 해줍니다. 정리하여 기록한 글입니다 ✏️ [1] Xcode Template 설치 우선 Xcode Template을 설치해줍니다. 여기 들어가서 이 폼을 입력하면 메일로 템플릿을 보내줍니다. 다운받으니까 이런 폴더가 나오는데 README.md 를 가보면 이 명령어로 template을 install / uninstall 할 수 있다고 하네요 다운받은 폴더로 이동하여 install 명령어를 실행시켜주면 템플릿 설치 완료! CleanSwift에서 제공하는 템플릿 관련 영상 도 참고하면 좋습니다. [2] 프로..
마틴 파울러 - 리팩터링 (2판) 의 9장 내용 중 기억하고 싶은 것 기록 ✏️✏️ 9.4 참조를 값으로 바꾸기 (change Reference to Value) - 참조로 다루는 경우: 내부 객체는 그대로 둔 채 그 객체의 속성산 갱신함. - 값으로 다루는 경우: 새로운 속성을 담은 객체로 기존 내부 객체를 통째로 대체함 값 객체는 불변이기 때문에 자유롭게 활용하기 쉽다. 불변 데이터 값은 프로그램 외부로 건네줘도 나중에 그 값이 나 몰래 바뀌어서 내부에 영향을 줄까 염려하지 않아도 된다. 값을 복제해 이곳저곳에서 사용하더라도 서로간의 참조를 관리하지 않아도 된다. 그래서 값 객체는 분산 시스템, 동시성 시스템에서 특히 유용하다. 9.5에서 나오지만.. 이런 값 객체의 특성 때문에 이번 리팩터링을 적용..
WWDC 2021 - Meet async / await in Swift 중, 등장배경만 기록한 글 입니다. ✏️ UIKit은 iOS 15부터 이미지 썸네일링을 할 수 있는 메소드들을 제공합니다. func preparingThumbnail(of: CGSize) -> UIImage? - synchronous한 방식 func prepareThumbnail(of: CGSize, completionHandler: (UIImage?) -> Void) - asynchronous 한 방식 이 썸네일 메소드를 예시로 하여 어떤 문제점이 있어서 async / await이 등장하게 되었는 지를 말씀해주십니다. # synchronous function 을 쓸 때 synchronous한 방식의 메소드를 쓰면 해당 쓰레드는 bl..
- Total
- Today
- Yesterday
- Django FCM
- Dart Factory
- Flutter 로딩
- 플러터 얼럿
- METAL
- 구글 Geocoding API
- Sketch 누끼
- github actions
- drf custom error
- Flutter getter setter
- cocoapod
- PencilKit
- flutter build mode
- ipad multitasking
- 장고 URL querystring
- 플러터 싱글톤
- flutter 앱 출시
- Python Type Hint
- 장고 Custom Management Command
- ribs
- Flutter Text Gradient
- DRF APIException
- Flutter Clipboard
- SerializerMethodField
- Watch App for iOS App vs Watch App
- flutter deep link
- Flutter Spacer
- Django Heroku Scheduler
- Django Firebase Cloud Messaging
- flutter dynamic link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |