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..
[1] 이슈 며칠 전 헤로쿠로부터 메일을 받았다. 나의 DB는 8,027 row를 가지고 있는데 내가 사용 중인 PostgreSQL DB Hobby Dev Plan (무료)는 최대 10,000 row만 insert 가능하다는 것이였다. 10,000 row를 넘어가면 더이상 insert가 되지 않고 plan을 준수하게 될 때 insert 권한이 자동 복구된다고 한다,,, database를 Basic ($9/month) or higher plan으로 마이그레이션 하라고 했다,,, 참고로Heroku > My App > Resource > Add-ons Heroku Postgres 선택하면 현재 row 개수, 최대 row 개수 등 DB 상태 및 설정을 볼 수 있다. 사용자가 늘고 있는 추세라서 migration..
Python sort문서 (파이썬 3.8버전) 를 보면서 Sort를 살펴보겠습니다. [1] list.sort() vs sorted() 우선 파이썬 리스트는 두가지의 built-in function이 있는데 list.sort() 와 sorted() 입니다. 1) list.sort() 오직 list에서만 사용할 수 있는 function. list를 제자리(in-place)에서 sort 합니다. 즉 original list를 수정합니다. 2) sorted() iterable 객체 (list, tuple, 딕셔너리 등등)에 모두 사용할 수 있는 function. list에 sorted를 해주면, 새로운 list를 만들어서 반환해줍니다. => ' list.sort() 는 sorted() 보다 덜 편하지만, 만약 ..
- Total
- Today
- Yesterday
- METAL
- flutter dynamic link
- Python Type Hint
- Flutter getter setter
- Django FCM
- Flutter Clipboard
- 장고 URL querystring
- flutter deep link
- 장고 Custom Management Command
- SerializerMethodField
- PencilKit
- DRF APIException
- flutter build mode
- 플러터 얼럿
- Flutter Text Gradient
- github actions
- Flutter Spacer
- Watch App for iOS App vs Watch App
- flutter 앱 출시
- Flutter 로딩
- 플러터 싱글톤
- cocoapod
- Dart Factory
- Django Firebase Cloud Messaging
- Sketch 누끼
- drf custom error
- 구글 Geocoding API
- ribs
- ipad multitasking
- Django Heroku Scheduler
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |