์ ์ฒด ๊ธ
[iOS][HIG] Loading (ํ๊ธ ver.)
Loading When content is loading, a blank or static screen can make it seem like your app is frozen, resulting in confusion and frustration, and potentially causing people to leave your app. ์ฝํ ์ธ ๊ฐ ๋ก๋ฉ ์ค์ผ ๋ ๋น ํ๋ฉด์ด๋ ์ ์ ์ธ ํ๋ฉด์ ์ฌ๋ฌ๋ถ์ ์ฑ์ด ๋ฉ์ถฐ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ์ฌ ํผ๋์ ์ด๋ํ๊ณ ์ฌ์ฉ์๊ฐ ๋น์ ์ ์ฑ์์ ๋๊ฐ๊ฒ ๋ฉ๋๋ค. Make it clear when loading is occurring. At minimum, show an activity spinner that communicates something is happening. Even ..
[Algorithm] ์ ๋ ฌ | ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๊ณ์ ์ ๋ ฌ
์ ๋ ฌ์ด๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์์๋๋ก ๋์ดํ์ฌ ์ฌ๋ฐฐ์นํ๋ ๊ฒ์ ๋งํ๋ค. ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ํ๋ ๊ฐ์ ํ์ํ๋ ์ด์ง ํ์(Binary Search)๋ฅผ ์ํด์๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์์๋์ด์ผ ํ๋ค. 1. ์ ํ ์ ๋ ฌ ๐ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๊ตํํ๋ ๊ณผ์ ์ ๋ฐ๋ณต swap(๋ฆฌ์คํธ์์ ๋ ์์์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ ์์ )์ ์ด์ฉํ๋ฉด ์ ํ์ ๋ ฌ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. arr = [4,3,1,7,2,8,6,5] for i in range(len(arr)): min_index = i # ์ฐ์ ๊ฐ์ฅ ์์ ์์์ ์ธ๋ฑ์ค๋ก ๋งจ ์์ ์์๋ฅผ ์ง์ for j in range(i+1, len(arr)): # ๋งจ ์ ์์ ์ ์ธ if arr[min_index] > arr[j]: # ๊ฐ์ฅ ์์ ..
[iOS][HIG] Onboarding (ํ๊ธ ver.)
Onboarding Onboarding lets you welcome new users and reconnect with returning ones. An optional onboarding experience that’s fast, fun, and educational can help people get the most from your app without getting in their way. ์จ๋ณด๋ฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ๋ถ์ ์ ์ฌ์ฉ์๋ฅผ ํ์ํ๊ณ ๋์์จ ์ฌ์ฉ์์ ๋ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋น ๋ฅด๊ณ , ์ฌ๋ฏธ์๊ณ , ๊ต์ก์ ์ธ ์จ๋ณด๋ฉ ๊ธฐ๋ฅ์ ํตํด ์ฌ๋๋ค์ ๋ฐฉํด๋ฐ์ง ์๊ณ ์ฑ์ ์ต๋ํ ํ์ฉํ ์ ์์ต๋๋ค. Provide onboarding that helps people enjoy your app, not jus..
[Swift] Optionals
๋๋ค๋ฆฌ๋ ๋๋ค๊ฒจ๋ณด๊ณ ๊ฑด๋์. Optional: ๋ฐ์ดํฐ๊ฐ ์์ ์๋ ์๊ณ ์์ ์๋ ์๋ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฒ Optional์ ์ฌ์ฉํ ๋๋ 2๊ฐ์ง Case๊ฐ ์๋ค. (1) ์ด๋ค ๊ฐ์ด ์์ด์ ๊ทธ ๊ฐ์ ์ธ ์ ์๋ ๊ฒฝ์ฐ (2) ์์ ๊ฐ์ด ์์ด์ ์ ๊ทผํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ - nil: ์์ง ๊ฐ์ด ์๋ค. โป ํ์์ ๋ฐ๋ผ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ๋๋ก ๋ฐ๋ ํจ์๋ฅผ ๋ง๋ค ์๋ ์๋ค. ์ต์ ๋์ ์ ์ํ๋ ๋ฒ Optional์ ์ ์ํ ๋๋ ์ด๋ค Type ๋ค์ ?๋ฅผ ๋ถ์ด๋ฉด ๋๋ค. ์ด ๋, Optional์ ์ธ ๋๋ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ์ง ๋ชจ๋ฅด๊ธฐ์ Type - Inferring์ด ์๋๋ฏ๋ก Type์ ๋ฐ๋์ ๋ฃ์ด์ค์ผํ๋ค. Optional์์ ๊ฐ์ด ์๋์ง ํ์ธํ๊ณ ๊ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ | Optional Binding let userInputAge..
[Python] ๋ฆฌ์คํธ, 2์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ | sort()
ํ์ด์ฌ์๋ sort()๋ผ๋ ๋ด์ฅ ํจ์๊ฐ ์กด์ฌํด ๊ฐ๋จํ๊ฒ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฆฌ์คํธ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค. 1. ๋ฆฌ์คํธ ์ ๋ ฌํ๊ธฐ - ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ arr = [2,3,4,5,1] arr.sort() print(arr) # [1,2,3,4,5] - ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ arr = [2,3,4,5,1] arr.sort(reverse=True) print(arr) # [5,4,3,2,1] 2. 2์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ - ๊ธฐ๋ณธ sort() ์ฌ์ฉํ๊ธฐ arr[i]๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. arr = [[2,3],[1,2],[0,4]] arr.sort() print(arr) # [[0, 4], [1, 2], [2, 3]] - ํน์ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ Case1. ํ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ..
[iOS] Splash Screen(์คํ๋์ ์คํฌ๋ฆฐ) ๊ตฌํํ๊ธฐ | Lottie Animation
์ค๋์ Splash Screen์ Animation์ผ๋ก ๊ตฌํํด๋ณผ ์์ Splash Screen์ Launch Screen(๋ฐ์น์คํฌ๋ฆฐ)์ด๋ผ๊ณ ๋ ํ๋ค. (= ์ฑ์ ์์ํ ๋ ์ฑ์ด ๋ก๋ฉ๋๋ ๋์ ๋น ํ์ด์ง๋ง ๋ ธ์ถ๋์ง ์๋๋ก 1~5์ด ๊ฐ ๋ด๋ค๊ฐ ์ฌ๋ผ์ง๋ ํ๋ฉด) ๋ทํ๋ฆญ์ค์ ์คํ๋์ฌ ํ๋ฉด ๋์์ด๋ ์์ด ํผ์์ ์ด๋ป๊ฒ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ ์คํ๋์ฌ ํ๋ฉด์ ๊ตฌํํ ๊น? Lottie๋ฅผ ์ด์ฉํ๋ฉด ํ ์ ์๋ค ! ์.... Lottie๊ฐ ๋ญ์..? Lottie๋ Airbnb ์์ ์ ๊ณตํ๋ ๋ชจ๋ฐ์ผ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. https://lottiefiles.com์์ ์ฌ๋ฌ ๋ชจ๋ฐ์ผ์ฉ ์ ๋๋ฉ์ด์ ์ ํ์ธํ ์ ์๋๋ฐ, ์ด๋ ๊ฒ Free Animations๋ ์๋ค ใ ใ ๋ค์ด๊ฐ๋ฉด ์ค๋ฅธ์ชฝ ํ๋ฉด์ฒ๋ผ ๋์์ด๋๋ถ๋ค๊ป์ ์ฌ๋ ค์ฃผ์ ๋ค์ํ ๋ชจ..
[Python] Collections - deque | ๊ฐ๋ , ๋ฉ์๋, list์์ ์ฐจ์ด
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด ์์ฃผ ์ฌ์ฉํ๋ Collections ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ deque ํด๋์ค์ ๋ํด ์์๋ณด์ ! 1. Deque๋? ์๋ฐฉํฅ์์ ํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ queue(ํ)๋ FIFO(First in, First out), ์ฆ ๋จผ์ ๋ค์ด๊ฐ ์์๊ฐ ๋จผ์ ๋์ค๋ ์ ์ ์ ์ถ ์๋ฃ๊ตฌ์กฐ์ด๋ค. deque๋ ์๋ฐฉํฅ ํ์ ๊ตฌ์กฐ์ด๊ธฐ์ ์, ๋ค ์์ชฝ ๋ฐฉํฅ์์ element ์ถ๊ฐ/์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. 2. deque์ ๋ฉ์๋(Method) - append(x) : deque ์ค๋ฅธ์ชฝ์ x๋ฅผ ์ถ๊ฐ from collections import deque d = deque('abc') # deque ์์ฑ d.append(1) print(list(d)) # listํ์ผ๋ก ์ถ๋ ฅ # ['a','b','c',1]..
[iOS][HIG] Launching (ํ๊ธ ver.)
HIG๋ฅผ ํ๊ธ๋ก ์ฝ์ด๋ณด์! Launching The launch experience has a significant impact on the way people feel about your app. Regardless of the device people are using or how long it's been since they last opened your app, the launch experience should be fast and seamless. ๋ฐ์น๋ ์ฑ์ ๋ํ ์ฌ๋๋ค์ ๋๋์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ๊ธฐ๊ธฐ๋ ๊ทธ๋ค์ด ๋ง์ง๋ง์ผ๋ก ์ฑ์ ์ฐ์ง ์ผ๋ง๋ ๋์๋ ์ง์ ๊ด๊ณ ์์ด, ๋ฐ์น ๊ณผ์ ์ ๋น ๋ฅด๊ณ ๋งค๋๋ฌ์์ผ ํฉ๋๋ค. The guidelines below can help you desi..