User Notifications framework를 사용하여 Local Notification을 create & schedule 할 수 있습니다. [1] Asking Permission to Use Notifications Asking Permission to Use Notifications 문서 를 참고해주세요. 이런 얼럿을 띄워서 Notification 권한을 먼저 받아줍니다. 보통 이 얼럿은 앱 처음 실행시킬 때 보여주잖아요! 근데 문서에서는 사용자가 이 앱에 노티 권한이 필요한 이유를 이해할 수 있는 context에서 권한을 요청하라고 나와있습니다. 예를들어 리마인드 노티를 보내주는 task-tracking 앱이라고 한다면, 사용자가 첫번째 Task를 예약한 후 이 권한을 요청하는 것이 좋습니다..
WWDC 2019 - Large Content Viewer - Ensuring Readability for Everyone 를 본 기록 ✏️ [1] Large Content Viewer 란? 우리의 목표는 앱의 모든 부분이 모든 사용자에게 readable한 것입니다. Large Content Viewer은 Dynamic Type이랑 연관되어있습니다. (참고: Dynamic Type 글) 텍스트 사이즈를 Accessibility size 중 하나로 키워봅시다. 하지만 탭바의 텍스트는 여전히 커지지 않은 것을 볼 수 있습니다. 자리가 부족하기 때문에 탭바를 키우고 싶지는 않습니다. 대신 해당 버튼을 long press 하면 더 큰 버전을 볼 수 있습니다. 탭바 안에서 손가락을 Drag하면 각 탭의 큰 버전이..
WWDC 2019 - Creating an Accessible Reading Experience 를 본 기록 ✏️ [ 인트로 ] 이렇게 긴 형식의 읽는 콘텐츠를 표시하는데 중점을 둔 앱의 경우, 보통 좋은 사용자 인터페이스를 제공하기 위해서 custom text layout를 구현합니다. custom text layout을 구현하기 위해서 Core Text나 TextKit 같은 lower level technologies로 전환해야하는 경우가 많습니다. 이 세션에서는 VoiceOver 모드에서 훌륭한 accessible reading experience를 제공하기 위한 방법을 알아볼 것입니다. [1] Reading Content Protocol 아래와 같은 Page based 앱을 예제로 살펴보겠습니다...
WWDC 20 - Make your app visually accessible 를 본 기록 ✏️ [ 인트로 ] visual accessibility를 생각할 때 너는 VoiceOver(built-in screen reader on iOS)를 생각할 것입니다. 하지만 visual accessibility에는 VoiceOver 뿐만아니라 더 많은 것들이 있습니다. 어떤 사람들은 완전한 시야(full sight), 부분적인 시야(partial sight) 또는 낮은 시야(low sight)를 가지고 있고, 어떤 사람들은 전혀 보지 못합니다. 그리고 그 사이에는 색맹(color blindness), 빛 민감도(ight sensitivity), 움직임 민감도(motion sensitivity) 등 많은 것들이 있..
WWDC 20 - App accessibility for Switch Control 를 본 기록 ✏️ [1] Switch Control 이란? 스위치 컨트롤(Switch Control)은 운동 능력이 제한된 사용자(Users with limited motor abilities)가 하나 이상의 외부 스위치나 버튼을 사용하여 iOS 기기와 상호 작용할 수 있도록 하는 애플 장치에 내장된 기술입니다. 사용자는 이 스위치를 이용해서 커서를 이동시키거나 특정 제스쳐(스크롤, 탭, 볼륨조절 등) 할 수 있습니다. 보통 이러한 스위치나 버튼은 휠체어에 장착되고 사용자는 헤드탭(head taps), 혀 클릭(tongue clicks), 빨대 내쉬기(breathing in or out into a straw) 등으로 스..
WWDC 19 - Writing Great Accessibility Labels 를 본 기록 ✏️ [1] What is Label? accessibility label의 정의는? (참고로 succinct는 '간단명료한' 이란 뜻을 가집니다.) [2] Understanding Context 여기 이런 플러스 버튼이 있을 때, accessibility label을 뭐라고 해줘야할까요? 그것은 전부 context에 달려있습니다. 예를 들어 메모 앱이라면 add to note 가 될 수 있겠고 쇼핑앱이라면 add to favorite, add to cart 가 될 수 있겠습니다. [3] Best Practices 아래 6가지를 지킨다면 best practices 입니다. 1) Remember to add lab..
WWDC 2020 - Accessibility design for Mac Catalyst 를 본 기록 ✏️ Mac Catalyst 앱을 만들 때, ios에서 accessible하게 만들었다면, 그 앱을 mac으로 가져왔을 때도 accessible 해야합니다. iOS에서의 손가락이 맥에서는 키보드이므로 (?) 우리의 목표는 키보드로 다양한 기능을 제공해서 앱을 accessible하게 만드는 것입니다. [1] Keyboard focus 첫번째로 고려해야하는 것은 keyboard focus 입니다. iOS에서 손가락으로 포커스를 이동했다면 맥에서는 키보드의 Tab 키로 포커스를 이동합니다. 우선 설정 > 키보드 > Shorcuts로 가서 Use keyboard~~ 를 체크해줍니다. 그러면 keboard로 다른..
WWDC 2017 - Building Apps with Dynamic Type 를 본 기록 ✏️ (여기서 Text만 기록했는데 tableview랑 image도 뒤에 설명해주신답니다,,) [1] Dynamic Type With Dynamic Type, people choose their preferred text size and iOS switches fonts automatically as needed. Dynamic Type을 지원하는 전화 앱인데요, 저시력자가 볼 때는 이렇게 보이기 때문에 Dynamic Type을 지원하는게 얼마나 중요한 지 보여주십니다. 텍스트 사이즈는 설정 > 디스플레이 및 밝기 > 텍스트 크기에서 바꿀 수 있고 더 큰 사이즈를 원한다면, 설정 > 손쉬운 사용 > 디스플레이 및 ..
마틴 파울러 - 리팩터링 (2판) 의 7장 내용 중 기억하고 싶은 것 기록 ✏️✏️ 6장에서는 기본적인 리팩터링 기법들을 설명해주십니다. (함수 추출하기 / 함수 인라인 하기 / 이름 바꾸기 / 매개변수 객체 만들기 등등) 7장에서는 캡슐화를 주제로한 리팩터링 기법들을 설명해주시는데 인상깊은 몇가지만 기록합니다. 7.1 레코드 캡슐화 하기 (Encapsulate Record) (위의 예제랑 다른 예제에 대한 설명입니다,,) .... 클라이언트가 데이터 구조를 요청할 때 실제 데이터를 제공해도 된다. 하지만 클라이언트가 데이터를 직접 수정하지 못하게 막을 방법이 없어서 '모든 쓰기를 함수 안에서 처리한다' 는 캡슐화의 핵심 원칙이 깨지는게 문제이다. 그래서 내부데이터를 복제해서 제공한다. get rawDa..
로컬에서 chromedriver를 쓸 때는 크롬드라이버를 다운받은 후, 폴더에 넣고 local path를 이용해서 chromedriver를 실행시켜주었습니다. from selenium import webdriver import os BASE_DIR = Path(__file__).resolve().parent chrome_driver_path = os.path.join(BASE_DIR, 'chromedriver') chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-gpu") driver = webdriver.Chrome(chrome_dr..
- Total
- Today
- Yesterday
- ipad multitasking
- Flutter getter setter
- 플러터 얼럿
- Flutter Spacer
- DRF APIException
- github actions
- cocoapod
- METAL
- Flutter Clipboard
- flutter build mode
- SerializerMethodField
- Flutter 로딩
- Django Heroku Scheduler
- Django Firebase Cloud Messaging
- 구글 Geocoding API
- PencilKit
- 플러터 싱글톤
- drf custom error
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- Flutter Text Gradient
- ribs
- Dart Factory
- Django FCM
- 장고 Custom Management Command
- Python Type Hint
- 장고 URL querystring
- flutter dynamic link
- flutter deep link
- Sketch 누끼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |