마틴 파울러 - 리팩터링 (2판) 의 11장 내용 중 좋았던 것들 기록 ✏️✏️ 11.4 객체 통째로 넘기기 객체를 통째로 넘기면 - 변화에 대응하기 쉽다. - 매개변수 목록이 짧아져서 일반적으로 함수 사용법을 이해하기 쉬워진다. 하지만 함수가 객체 자체에 의존하기를 원치 않을 때는 이 리팩토링을 수행하지 않는다. 특히 객체와 함수가 서로 다른 모듈에 속한 상황이면 특히 더 그렇다. 어떤 객체로부터 값 몇 개를 얻은 후 그 값들로만 무언가를 하는 로직이 있다면 그 로직을 객체 안으로 집어넣어야함을 알려주는 악취로 봐야한다. ==> '객체 통째로 넘기기 vs 객체에서 값 몇개를 꺼내 파라미터로 넘기기'는 개발하며 자주 고민되는 이슈이다. 나도 객체와 함수가 서로 다른 모듈에 속해있는 경우 통째로 넘기기를 ..
Accessibility 관련 헷갈리는 것 정리-!! 특히 accessibilityElementsHidden 이 용어 때문에 헷갈리는 것 같다,,, (서브뷰들을 모두 접근성 element로 안해줘야지! 할 때 child, all 이란 용어가 떠오르면서 이 단어가 생각이 잘안나는 듯 ㅠㅠ) [1] isAccessibilityElement somView.isAccessibilityElement = false someView의 accessibility가 disable 된다. [2] accessibilityElementsHidden somView.accessibilityElementsHidden = true someView 뿐만 아니라 someView의 모든 subviews들의 accessibility도 함께 ..
Reality Composer + Xcode 를 써보며 알게 된 것 정리-!! 우선 프로젝트를 만들어줍니다. AR App 선택 > RealityKit 선택해서 만들어줍니다. 그럼 이런 코드가 기본적으로 생성이 됩니다. [1] 코드에서의 size, position 단위는 미터! Experience.rcproject를 선택해서 Open in Reality Composer를 눌러줍니다. 그리고 Reality Composer 에서 골드 material 를 선택해주고 Gold Box라고 네이밍을 해줍니다. 여기서 빨간 네모에 주목해주세요!!!! Reality Composer에서 postion, size 등이 다 센티미터 단위입니다! 이제 코드로 돌아옵니다. Scene name이랑 Entity name을 잘 입력해..
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..
- Total
- Today
- Yesterday
- github actions
- Django Heroku Scheduler
- Watch App for iOS App vs Watch App
- flutter build mode
- 장고 Custom Management Command
- 플러터 얼럿
- 장고 URL querystring
- flutter dynamic link
- Django FCM
- Python Type Hint
- 플러터 싱글톤
- Flutter getter setter
- Django Firebase Cloud Messaging
- flutter 앱 출시
- PencilKit
- ipad multitasking
- 구글 Geocoding API
- ribs
- cocoapod
- Flutter Clipboard
- drf custom error
- Flutter 로딩
- Flutter Text Gradient
- Sketch 누끼
- SerializerMethodField
- METAL
- DRF APIException
- flutter deep link
- Flutter Spacer
- Dart Factory
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |