TIL

ยท๐Ÿ“ Note
[ ๊ธฐ๋ก ] ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•˜๋ฉด์„œ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ–ช๏ธ Hash table ๋ณต์Šต - ํ•ด์‹œ ํ…Œ์ด๋ธ”, ๋ฒ„ํ‚ท, ์Šฌ๋กฏ, ํ•ด์‹œ ํ•จ์ˆ˜, ํ•ด์‹ฑ, ํ•ด์‹œ ์ถฉ๋Œ, ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ โ–ช๏ธ ๋น„ํŠธ์™€ ๋ฐ”์ดํŠธ - ๋น„ํŠธ๋ž€ ์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์†Œ ๋‹จ์œ„ - ์ปดํ“จํ„ฐ๋Š” 2์ง„์ˆ˜(0๊ณผ 1)๋กœ ๋™์ž‘ - ๋ฐ”์ดํŠธ(byte)๋ž€ ๋น„ํŠธ(bit)๊ฐ€ 8๊ฐœ ๋ชจ์—ฌ์„œ ๊ตฌ์„ฑ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋‹จ์œ„ โ–ช๏ธ ๋ฐ”์ดํŠธ ์ €์žฅ ์ˆœ์„œ ์ปดํ“จํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•  ๋•Œ ๋ฐ”์ดํŠธ(byte) ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•œ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๊ฐœ 32bit, 64bit๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์—ฐ์†๋˜๋Š” ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ๋ฐ”์ดํŠธ ์ €์žฅ ์ˆœ์„œ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋‘ ๊ฐ€..
ยท๐ŸŒฑ SeSAC
- ๋‚ด๊ฐ€ ๋ณด๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจํ•˜๋Š” ํ‚ค์›Œ๋“œ(๋„ˆ๋ฌด ์ž์„ธํ•˜๊ฒŒ ์ ์œผ๋ ค๊ณ  ๋ถ€๋‹ด๊ฐ–์ง€ ๋ง๊ธฐ) - ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด๋”๋ผ๋„ ์ ๊ณ  ๋‹ค์‹œ ์ƒ๊ฐํ•˜๊ณ  ์˜๋ฌธ์  ๊ฐ–๊ธฐ 1. Alamofire ์ค‘๋ณต ์ฝ”๋“œ ๊ฐœ์„ ํ•˜๊ธฐ import Foundation import Alamofire final class Network { static let shared = Network() private init() {} } extension Network { func request( _ type: T.Type = T.self, url: URL, method: HTTPMethod = .get, parameters: [String: String]? = nil, headers: HTTPHeaders, completion: @escaping (Result) -> ..
ยท๐ŸŒฑ SeSAC
๋ ˆ์ด์•„์›ƒ ์ด์ œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ์—†๋‹ค. ๋ ˆ์ด์•„์›ƒ ์งœ๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋™์ผํ•˜๊ณ , ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ Dynamicํ•˜๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. Realm, TableView ๊ฐฑ์‹ , TableView ๋กœ๋“œ Realm ์‚ญ์ œ ์‹œ ๋ฌธ์ œ ๋ฐœ์ƒ func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let favorite = UIContextualAction(style: .normal, title: "์‚ญ์ œ") { action, view, completio..
ยท๐ŸŒฑ SeSAC
๋ฐฑ์—…/๋ณต๊ตฌ ๊ฐœ์ธ ์ •๋ณด ๋ฌธ์ œ๋Š” ๋˜๊ฒŒ ๋ฏผ๊ฐํ•œ ๋ฌธ์ œ๋‹ค. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์–ด๋Š ์ •๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„˜๊ธด๋‹ค. 1. ๋กœ์ปฌ - ์„œ๋ฒ„ ์ž์ฒด ์„œ๋ฒ„ ์„œ๋“œ ํŒŒํ‹ฐ (google drive, dropbox) : ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๊ณ„์ •์— ๊ฐœ์ธ ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ, ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹, ๋ถˆํŽธํ•˜๊ณ  ์–ด๋ ค์šด ์ ์ด ๋” ๋งŽ์Œ ํŒŒ์ผ ์•ฑ : share activity ์ด์šฉํ•ด์„œ ์™ธ๋ถ€๋กœ ๋ฐฑ์—… ํŒŒ์ผ ์ „์†ก(mac, kakao, email, ...), ๋””ํดํŠธ ๊ธฐ๋ณธ ์•ฑ, ์•„์ดํฐ ์œ ์ €์—๊ฒŒ๋Š” 100ํผ์„ผํŠธ ๋Œ€์‘ 2. ๋ฐฑ์—… document - archive.zip(image, realm) ์ƒ์„ฑ - activity view controller ๋งŒ์•ฝ์— ์•„์ดํฐ์— ์ €์žฅ ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–กํ• ๊นŒ? (์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒ˜) ๋ฐฑ์—… ํŒŒ์ผ์ด ์—†๋Š”..
ยท๐ŸŒฑ SeSAC
Document Directory ๊ฐ๊ฐ์˜ ์•ฑ์€ ๋ชจ๋‘ Sandboxํ™” ๋˜์–ด ์žˆ๋‹ค. ๊ฐ์ž ๊ณ ์œ ์˜ ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋ฐ”์šด๋”๋ฆฌ๋Š” Container๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ ํฌ๊ฒŒ Bundle Container, Data Container, iCloud Container๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” Data Container ์•ˆ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค. Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‚ญ์ œ, ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฌด๋ฐฉํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฃจ๋Š” ์ปจํ…์ธ ์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค๋งŒ ์ €์žฅํ•œ๋‹ค. Realm์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Document ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. FileManager ์œ„์—์„œ ๊ฐ์ž ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ทธ ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด FileManager๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” Docum..
ยท๐ŸŒฑ SeSAC
JSON "JSON์€ ํ˜•ํƒœ์— ๋ถˆ๊ฐ€ํ•˜๋‹ค." ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ(์„œ๋ฒ„, ํด๋ผ ...)์‚ฌ์ด์—์„œ ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์—์„œ ๋ฐ์ดํ„ฐ ํ˜•์‹์˜ ํ†ต์ผ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ด€์ ์ด ๋‚˜์˜จ๋‹ค. ์‹ค์ œ๋กœ ๋ณด์—ฌ์ง€๋Š” ๋ฐ์ดํ„ฐ๋Š” String์˜ ์ง‘ํ•ฉ์ด๋‹ค. Realm Local DB ์ž์ฒด์—์„œ ์กฐํšŒ ์ž์ฒด๋Š” ํฌ๊ฒŒ ์†๋„์™€ ์„ฑ๋Šฅ์„ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์ด ๋œ๋‹ค. Filter(ํ•„ํ„ฐ) ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋‹ค์Œ 2๊ฐ€์ง€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Realm filter query ๊ธฐ๋ฐ˜ NSPredicate ๊ธฐ๋ฐ˜ (Apple) Lazy var ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ฐ˜๋“œ์‹œ ๋ณด์ด๋Š” ๋ทฐ์˜ ๊ฒฝ์šฐ ๊ตณ์ด lazy var๋ฅผ ์ด์šฉํ•ด์„œ ์ง€์—ฐ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๊ทธ ๋ชฉ์ ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์˜คํžˆ๋ ค ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•  ๋•Œ ์ž˜๋ชป๋œ ํ•ด์„์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. UIBu..
ยท๐ŸŒฑ SeSAC
Notification.Name ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” Notification์ด ๋งŽ๋‹ค. awakeFromNib, init ํŠน์„ฑ์— ๋งž๊ฒŒ ์–ด๋Š ๊ฒƒ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•œ์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. SB, CB ๋‘˜ ๋‹ค ํ˜ธ์ถœ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. ์–ด๋–ค ๊ฒƒ์ด ๋จผ์ € ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. (Break Point ํ™•์ธ) ํ™”๋ฉด์„ ๋„์šธ ๋•Œ viewDidLoad()์—์„œ Alert์„ ๋„์šธ ์ˆ˜ ์—†๋‹ค. (viewDidLoad๋Š” ํ™”๋ฉด์„ ๋„์šฐ๊ธฐ ์ง์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ, viewDidAppear์—์„œ ํ˜ธ์ถœํ•˜๊ธฐ) ํ™”๋ฉด์„ ํ•ญ์ƒ ํ˜„์žฌ ํ™”๋ฉด์—์„œ present, push ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ˜„์žฌ window์˜ rootViewController์—์„œ ๋„์šฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค. SnapKit Layout Method make remake update ์…€ ๋ ˆ์ด์•„์›ƒ(C..
ยท๐ŸŒฑ SeSAC
BaseViewController ์‚ฌ์‹ค ์ด์ „์—๋„ BaseViewController๋ฅผ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธŒํด๋ž˜์‹ฑํ•˜๋Š” ์ž‘์—…์„ ํ•ด์™”์—ˆ๋Š”๋ฐ ์–ด๋Š ์ˆœ๊ฐ„ ํ”„๋กœํ† ์ฝœ์„ ์“ฐ๋Š” ๊ฒŒ ์ข‹๋‹ค๋Š” ์ฃผ๋ณ€ ๋ง์ด ๋งŽ์ด ๋“ค๋ ธ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ๊ฐ€๋ผ๋Š” ์ƒ๊ฐ์„ ๋‚˜๋„ ๋ฉ๋‹ฌ์•„ ํ–ˆ์—ˆ๋Š”๋ฐ, ์ƒ์†์„ ํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฌด์ž‘์ • ๋‚˜์˜๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ์ž˜๋ชป๋˜์ง€ ์•Š์•˜๋‚˜๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์–ด์ฐจํ”ผ ์ƒ์†์€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ์—ฌ์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด๋ผ๋ฉด ํ•˜๋‚˜์˜ BaseViewController๋กœ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์ง€ ์•Š๋‚˜ ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ ์™ธ์ ์ธ ๊ฒƒ๋“ค์„ ํ”„๋กœํ† ์ฝœ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋” ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ƒ์†๊ณผ ํ•ฉ์„ฑ์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ทธ ์ •๋„๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค. BaseView..
taeeekki
'TIL' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก