회사에서 TDD 관련 외부세션을 듣다가 '서비스가 안티패턴' 이라는 말을 들었다. 왜 안티패턴일까..? 머리에 궁금증이 남아있었는데 클린아키텍처 27장('크고 작은 모든' 서비스들) 을 읽으며 이유를 알게 되었다. 그래서 정리! (참고로 책을 쭉 이끌어온 저자의 맥락을 이 요약글에 다 담을 수 없으니.. 책을 읽어보시는 것을 추천드립니다.) [1] 서비스 아키텍처? 서비스의 이점? 서비스 지향 '아키텍처' 와 마이크로서비스 '아키텍처' 는 최근에 큰 인기를 끌었다. 그 이유는 다음과 같다. - 서비스를 사용하면 상호 결합이 철저하게 분리되는 것처럼 보인다. // 결합 분리 - 서비스를 사용하면 개발과 배포 독립성을 지원하는 것 처럼 보인다. // 개발 및 배포 독립 둘다 일부만 맞는 말이다. 뒤에서 살펴..
UITableViewDiffableDataSource의 4가지 apply 메서드 글에서 진행한 간단한 예제를 계속 활용해서 헷갈리는 부분을 테스트해보겠습니다. [1] 아이템이나 인덱스 찾을 때, datasource API를 써야할까 vs snapshot API를 써야할까? UITableViewDiffableDataSource 는 아래와 같은 API가 있고 NSDiffableDataSouceSnapshot은 아래와 같은 API가 있습니다. 각각을 활용해서 할 수 있는 것들을 나열해보겠습니다. (iOS 13 기준!!) 어떤 것을 쓰던 상관없지만,, ✔️ Section이 여러개 있는 화면이라면 snapshot API // multiple sections 관련해서 다양한 기능을 제공하니까 ✔️ 제가 작성한 예제..
Diffable Data Source in iOS 15 에서 다룬 내용인데, 헷갈리니까 한번 더 정리! [1] UITableViewDiffableDataSource의 4가지 apply 메서드들 UITableViewDiffableDataSource 에는 Updating Data를 위한 4개의 apply 메서드들이 있습니다. 위에서부터 적어보면 다음과 같습니다. - apply(_:animatingDifferences:) // iOS 15+ - apply(_:animatingDifferences:completion:) // iOS 13+ - applySnapshotUsingReloadData(_:) // iOS 15+ - applySnapshotUsingReloadData(_:completion:) // iO..
WWDC 2022에서 애플이 unity plugins 을 공개했습니다. 관련 세션은 아래 두개입니다. - WWDC 2022 > Plug-in and play: Add Apple frameworks to your Unity game projects - WWDC 2022 > Add accessibility to your Unity games (WWDC에서 유니티 에디터와 C# 스크립트를 볼 수 있는 신기한 경험을 할 수 있습니다..ㅎㅎ) 위의 세션들과 Apple Unity Plug-In Quick Start Guide 문서를 따라하면 쉽게 유니티 프로젝트에 애플 플러그인을 추가할 수 있습니다. 제공하는 플러그인은 아래와 같습니다. [1] 플러그인 추가하기 - Apple Core # 1. Apple-Unity..
[1] 용어정리 text selection 하면 나오는 등장하는 메뉴 팝업 UI를 HIG 에서는 Edit Menus 라고 지칭하고 개발 용어로는 UIMenuController 입니다. 그리고 Edit Menu (UIMenuContoller) 안에 나오는 Cut, Copy.. 이런 것들을 Command, Action, MenuItem 이라는 용어로 혼용해서 부릅니다. [2] UIMenuController 커스터마이징 (1) - System 첫번째로, UIMenuController 에 나오는 system commands 중 원하는 command 만 나오게 커스터마이징 하려면 어떻게 해야할까요? UIMenuController가 표시되기 전에 UIResponder 의 canPerformAction(_:withS..
[1] 용어정리 (출처: 이펙티브 코틀린) 애플 문서(Sequence and Collection)에 'eager' 이라는 단어가 나오는 데 이것을 이해하기 위해 이펙티브 코틀린 책내용을 가져왔습니다! ✔️ eager order (step-by-step) - 요소 전체를 대상으로 연산을 차근차근 적용한다. - 각 단계에서 연산이 이루어져 새로운 컬렉션을 만들어낸다. ✔️ lazy order (element-by-element) - 요소 하나하나에 지정한 연산을 한꺼번에 적용한다. - 최종 연산이 이루어지기 전까지는 각 단계에서 연산이 일어나지 않는다. ==> 사전적 의미로 lazy = 게으른, eager = 열렬한(열심인) 이기 때문에 저 두단어가 같이 쓰이는 것 같아요! [ eager vs lazy ] ..
Swift Docs > Attribute 를 보면, Swift의 inline 관련 attribute 로 inlinable과 usableFromInline 가 있습니다. [1] inline 한정자란? 우선 이펙티브 코틀린 책 내용을 통해 inline 개념을 먼저 알아봅시다! inline 한정자의 역할은 컴파일 시점에 '함수를 호출하는 부분'을 '함수의 본문' 으로 대체하는 것입니다. 일반적인 함수를 호출하면 함수 분문으로 점프하고, 본문의 모든 문장을 호출한 뒤에 함수를 호출했던 위치로 다시 점프하는 과정을 거칩니다. 하지만 inline 한정자를 붙여 함수를 만드면, 이러한 점프가 일어나지 않습니다. # 장점 모든 함수는 inline 한정자를 붙이면 조금 더 빠르게 동작합니다. 함수 호출과 리턴을 위해 점..
[1] FastAPI 란? FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크 라고 합니다. 파이썬 웹프레임워크로 Flask와 Django가 양대산맥 이였는데요,, FastAPI가 Flask를 대체할 것이라고 보는 분들도 많으시고 (참고: FastAPI의 시대, 아직도 Flask 쓰시나요? ) 여기저기 매우 핫하네요 🔥 [2] FastAPI 특징 문서 에 나오는 FastAPI 특징입니다. 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나. 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. * ..
[1] 서론 업무로 모듈화를 진행하고 있는데, cyclic dependency가 생각보다 많았다,,, 폴더 구조일 때는 편하게 이곳저곳 다 참조하고 있던 코드들이 모듈 구조로 바뀌니 그제야 아픈 곳을 드러내기 시작했다.. 22장 > 클린아키텍쳐 에 나오는 이 내용을 알고 있었으나.. 소스 코드 의존성은 반드시 안쪽으로, 고수준의 정책을 향해야 한다. 내부의 원에 속한 요소는 외부의 원에 속한 어떤 것도 알지 못한다. 특히 내부의 원에 속한 코드는 외부의 원에 선언된 어떤 것에 대해서도 그 이름을 언급해서는 절대 안된다. 이것을 지키려면 수정범위가 많으니까,,, 적당히... 타협해도 되지 않을까....?.... 내부의 원도.... 외부의 원을.... 조금... 알 수...있게..... 그럼...양방향.....
[1] 어드레서블 에셋 시스템이란? Addressable Asset System 문서에 설명이 간단명료하게 되어있으니 읽어보는 것을 추천합니다. 유니티 블로그 > 어드레서블 에셋 시스템 글도 있습니다. 어드레서블 에셋 시스템은 'address (주소)' 로 asset을 load할 수 있는 쉬운 방법을 제공합니다. 어드레서블의 주된 기능은 로드할 대상이 되는 에셋과 에셋이 로드되는 위치 및 방식을 분리하는 것입니다. 에셋에 address를 부여하게 되면 에셋을 로드하는 측에서는 에셋의 address만 알면 되고 에셋의 실제 위치가 변경되어도 상관없습니다. (에셋이 원격서버에 업로드되어있든,, 앱 내부에 포함되어있는데 위치가 변했든,,, 노상관) [2] 어드레서블 시스템 등장 배경 감귤오렌지님의 유튜브 > ..
- Total
- Today
- Yesterday
- Flutter Clipboard
- Flutter getter setter
- Flutter Text Gradient
- 구글 Geocoding API
- Django Heroku Scheduler
- github actions
- flutter 앱 출시
- 장고 Custom Management Command
- PencilKit
- Sketch 누끼
- 플러터 얼럿
- 장고 URL querystring
- Dart Factory
- Flutter 로딩
- cocoapod
- Watch App for iOS App vs Watch App
- Flutter Spacer
- drf custom error
- Django Firebase Cloud Messaging
- flutter build mode
- Django FCM
- flutter dynamic link
- ipad multitasking
- SerializerMethodField
- ribs
- flutter deep link
- 플러터 싱글톤
- DRF APIException
- METAL
- Python Type Hint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |