[1] Consider size & size class instead of orientation portrait모드일때는 왼쪽 레이아웃, landscape모드일때는 오른쪽 레이아웃으로 나오게 해놨다고 합시다. 그럼 아래와 같이 아이패드 landscape 모드에서 split view를 띄우면 landscape일때의 레이아웃으로 나오겠죠...!!! 노우..!!! 우리가 원하는 것인 이런 레이아웃 인데 말입니다ㅠㅠ 그래서 orientation으로 분기하지 말고 Bounds 또는 Size Class로 분기하라고 하네요 [2] Think about how to respond to transition rotation & resizing 상태에 대해 인지하고 UI를 바꾸고 싶다면 아래의 함수들을 이용할 수 있습니다...
iOS 9부터 아이패드 멀티태스킹이 지원되었다고 합니다. slide over 또는 split view로 두가지 앱을 동시에 띄울 수 있는 것이죠! 관련 WWDC 영상으로는 Getting Started with Multitasking on iPad in iOS 9 가 있습니다. ⚠️ 멀티태스킹과 멀티 윈도우는 다릅니다...!! ⚠️ 멀티 윈도우는 iOS 13부터 지원가능한데, 멀티태스킹 처럼 서로 다른 두 앱을 각각 띄우는 것 뿐만 아니라 똑같은 앱을 두개 띄울 수 있는 것 까지 포함합니다. 메모앱을 두개 띄우고 텍스트를 입력하는 영상입니다. 멀티 윈도우 관련 WWDC 영상으로는 Introducing Multiple Windows on iPad 가 있습니다. [1] 멀티 태스킹 지원하는 방법 iOS 9 이..
옵져버블이 completed되고 난 후, 마지막 값을 테스트로 확인해보고 싶은 경우가 있다고 해보겠습니다. 이런 테스트 코드가 있습니다. 당연히 테스트가 실패하겠죠..?! RxBlocking을 쓰면 이 테스트는 성공합니다..!! toBlocking함수를 쓰면 Observable -> BlockingObservable로 바뀌고 BlockingObservable의 last함수는 시퀀스가 종료될때 까지 블러킹해주는 역할을 하기 때문이죠....!! (Blocks current thread until sequence terminates.) 그럼 BlockingObservable의 함수 몇가지를 더 알아보겠습니다. [1] first() 시퀀스의 첫번째 이벤트가 방출될때 까지 블러킹해줍니다. (Blocks curre..
1. 문제 폰트 파일을 프로젝트에 넣고 폰트 파일의 Target Membership 설정도 했으며 Info.plist 에서 추가해야하는 key, value 값도 추가했다. 하지만 이렇게 했을 때, 커스텀 폰트가 텍스트에 적용이 안되었다. 2. 해결방안 SceneDelegate > scene(_ scene: UIScene, willConnectTo…) method 에 아래의 코드를 추가해서 돌려보았다. for fontFamily in UIFont.familyNames { for fontName in UIFont.fontNames(forFamilyName: fontFamily) { print(fontName) } } 콘솔에서 Nanum을 검색하면 폰트네임이 NanumSquareR 로 들어가있다. 이렇게 폰트..
[1] NSManagedObjectContext를 여러개 사용하는 경우 보통 앱에서 하나의 managed object context를 사용합니다. (우리가 자주 쓰는 persistentContainer.viewContext) 하지만 여러개의 managed object context를 사용해야할 상황이 있습니다. 시간이 오래걸리는 작업을 viewContext에서 하면 메인쓰레드가 blocking 되는 상황에서요! 여러개의 managed object context를 사용할 때 유의할 점이 있습니다. Managed Object context A와 Managed Object Context B 가 있다고 가정해볼게요. 그리고 두개의 context에서 모두 persistent store에 저장되어있는 User 정보..
1. 문제 뷰컨트롤러에 텍스트 뷰를 올려주세요. 그리고 앱이 launch 된 지 5분후에 만개의 데이터를 만들고 저장하는 코어 데이터 연산을 해보겠습니다. CoreDataManager는 이렇게 구성되어있습니다. 그러면 텍스트를 타이핑하다가 5초 후에 CoreData 연산이 시작되면 아무리 타이핑을 입력해도 입력이 안됩니다. UI 담당인 메인 쓰레드가 blocking 되었기 때문이죠! CoreData 연산이 끝나면 다시 타이핑이 가능해집니다. 그 이유는 무엇일까요...?!?!?! 우리가 사용한 viewContext가 main queue에서 동작하는 친구이기 때문입니다!! 그래서 시간이 오래 걸리는 작업이라면, viewContext 를 사용하면 안됩니다. 사용자의 화면을 blocking 하기 때문이죠!!! ..
TextKit 관련 wwdc영상인 TextKit Best Practices 를 보다가 TextKit 구조(?)를 한장으로 정리하였다. Reference https://developer.apple.com/videos/play/wwdc2018/221/ TextKit Best Practices - WWDC 2018 - Videos - Apple Developer Leverage the abilities of TextKit to provide the best experience possible displaying and editing text. Get the best performance out of... developer.apple.com
슬랙에서 만들 수 있는 봇은 두가지가 있다고 합니다. 1. Bots - 상호작용하는 봇 2. Incoming Webhooks bots - 일방적으로 메세지를 보내는 봇 저는 일방적으로 메세지를 받는 게 필요해서 2번 봇으로 만들어보겠습니다. (필요한 용도 = 아이폰11 화이트를 쿠팡-특정 판매자에게서 구매하려고 결심했는데요 얼마전까지 2% 할인이 였는데, 갑자기 0% 할인으로 바뀌었습니다!!!! (오직 화이트 컬러만!!!!) 😱 그래서 2% 할인인 것을 봤는데, 정가를 주고 사기 너무 아까워서 할인율이 다시 적용되었나 거의 매일 들어가서 확인해보는데, 귀찮아서 슬랙봇 메세지로 받으려고 합니다.) 우선 저만 가입되어있는 슬랙 워크스페이스를 하나 만들고 진행하겠습니다. [1] Webhook URL 생성하기 ..
많은 분들이 크롤링으로 CGV IMAX 예매 알림봇을 많이 만드시더라구요....!! 😎 (크롤러를 이용해 CGV IMAX 명당 자리를 예매하자, Python 크롤링을 이용한 IMAX 예매 알림봇 만들기) 파이썬으로 영화 예매 오픈 알리미 만들기 라는 무료 인프런 강좌도 있습니다. 가까운 영화관 찾아주는 챗봇 도 좋은 것 같아요 저는 영화말고 다른 알림봇이 필요한게 있는데, 일단 위의 블로그들 보고 크롤링 연습만 해보려고 합니다 😉 분명 과제로 한 적이 있는 것 같은데 역시 다 까먹으니 적어둬야합니다...!!! 😓 내친김에(?) CGV, 메가박스, 롯데시네마 상영시간표를 모두 크롤링해보겠습니다 🏋️♀️ 실습환경 - Beatifulsoup와 requests 라이브러리가 설치된 가상환경 (저의 가상환경 이름..
ReactorKit문서 를 보면 transform 함수에 대한 설명이 있습니다. transform은 mutate나 reduce 함수처럼 Reactor에 반드시 구현해야하는 함수가 아닙니다. 그래서 저는 최근에 알았는데, 까먹지 않게 정리해두려고 합니다. Transform transform 관련 함수는 이렇게 세개가 있습니다. 이 함수들을 구현하여서 다른 observable stream들과 결합(combine) 할 수 있다고 합니다. 특히 transform(mutation:) 함수가 global event stream를 mutation stream과 결합하는 경우에 많이 쓰인다고 합니다. 잘 안와닿으니 더 구체적으로 살펴보겠습니다...!! 그러기 위해서 우선 Global State에 대해서 알아야합니다. ..
- Total
- Today
- Yesterday
- Sketch 누끼
- Flutter Clipboard
- cocoapod
- 장고 Custom Management Command
- Flutter Spacer
- SerializerMethodField
- flutter dynamic link
- 구글 Geocoding API
- Dart Factory
- flutter build mode
- flutter deep link
- Watch App for iOS App vs Watch App
- 플러터 얼럿
- Flutter Text Gradient
- Flutter 로딩
- 플러터 싱글톤
- Flutter getter setter
- ipad multitasking
- flutter 앱 출시
- Django Heroku Scheduler
- 장고 URL querystring
- PencilKit
- DRF APIException
- METAL
- Django FCM
- Python Type Hint
- Django Firebase Cloud Messaging
- ribs
- github actions
- drf custom error
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |