์ธ๋„ค์ผ [Swift] load(_:) method (fetching JSON data) ๋œฏ์–ด๋ณด๊ธฐ import Foundation //Create an array of landmarks that you initialize from landmarkData.json. var landmarks: [Landmark] = load("landmarkData.json") func load(_ filename: String) -> T { let data: Data guard let file = Bundle.main.url(forResource: filename, withExtension: nil) else { fatalError("Couldn't find \(filename) in main bundle.") } do { // Data(contentsOf:) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ Data ๊ฐ์ฒด๋กœ ์ฝ์–ด์˜จ๋‹ค...
์ธ๋„ค์ผ [Swift] Swift ์—์„œ Hashable, Codable์€ ๋ญ˜๊นŒ? Protocol ์•Œ์•„๋ณด๊ธฐ swiftui tutorial ์˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด, Struct ๋’ค์— ~able ๋กœ ๋ถ™์€ ๊ฒƒ๋“ค์ด ๋ณด์ธ๋‹ค. ์ด๊ฑด ๋ฌด์—‡์ด๋ฉฐ ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์„ ํ• ๊นŒ? Hashable๊ณผ Codable์€ ์Šค์œ„ํ”„ํŠธ ์–ธ์–ด์—์„œ ํ”„๋กœํ† ์ฝœ(Protocol)์ด๋‹ค. ์˜ˆ์‹œ์ฝ”๋“œ์—์„œ ๊ฐ๊ฐ์˜ ์˜๋ฏธ 1. Hashable: Hashable ํ”„๋กœํ† ์ฝœ์€ ๊ฐ์ฒด๋ฅผ ๊ณ ์œ ํ•œ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ํ•ด์‹œ๊ฐ’์€ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ๋œ๋‹ค. Hashable ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ Set์ด๋‚˜ Dictionary์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, Hashable ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฐ์ฒด๋Š” ์ง‘ํ•ฉ(Set)๊ณผ ๊ฐ™์€ ์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. Landmark ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ Hasha..
์ธ๋„ค์ผ [SwiftUI] ํ—ท๊น”๋ฆฌ๋Š” State, Binding, ObservedObject, EnvironmentObject ์ด์ •๋ฆฌ SwiftUI์—์„œ์˜ Single Source of Truth(SSOT, ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›)๋ž€ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค. ์ •๋ณด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ SSOT(Single Source Of Truth) ์•„ํ‚คํ…์ฒ˜ ๋˜๋Š” SPOT(Single Point Of Truth) ์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์š”์†Œ๊ฐ€ ๋งˆ์Šคํ„ฐ(๋˜๋Š” ํŽธ์ง‘)๋˜๋„๋ก ์ •๋ณด ๋ฐ ๋ชจ๋ธ ๊ด€๋ จ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ด€ํ–‰์ด๋‹ค. ํ•œ ๊ณณ์—์„œ๋งŒ ์ •๊ทœ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ๋ฐ์ดํ„ฐ ์š”์†Œ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์—ฐ๊ฒฐ์€ ์ฐธ์กฐ์šฉ์ด๋‹ค. ๋ฐ์ดํ„ฐ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์œ„์น˜๋Š” "source of truth" ์œ„์น˜๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ ์š”์†Œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์— ์ „ํŒŒ๋˜์–ด ํšจ์œจ์„ฑ/์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ, ์ž˜๋ชป๋œ ๋ถˆ์ผ์น˜์˜ ์‰ฌ์šด ๋ฐฉ์ง€ ๊ฐ™..
์ธ๋„ค์ผ [SwiftUI Tutorials] SwiftUI Essentials - Creating and Combining Views Creating and Combining Views | Apple Developer Documentation This tutorial guides you through building Landmarks — an app for discovering and sharing the places you love. You’ll start by building the view that shows a landmark’s details. developer.apple.com - SwiftUI ์•ฑ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ์€ ์•ฑ ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง. - ์ด ๊ตฌ์กฐ์˜ body ์†์„ฑ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Scene์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ‘œ์‹œํ•  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณต. - @main ์†์„ฑ์€ ์•ฑ์˜ entry point๋ฅผ ์‹๋ณ„. - ๊ธฐ๋ณธ์ ์œผ๋กœ Swi..
์ธ๋„ค์ผ React, Firebase์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“  ํ•ด์ปคํ†ค ์›นํŽ˜์ด์ง€ ๊ฐœ๋ฐœํŒ€ ํšŒ๊ณ  http://norithon.com ํ•ด์ปคํ†ค ์›น์‚ฌ์ดํŠธ๋Š” ์š”๊ธฐ ์žˆ๊ณ ์š” ..! ๊ฒŒ์ŠคํŠธ๋กœ ๋กœ๊ทธ์ธํ•˜์‹œ๋ฉด ๋‚ด์šฉ ์—ด๋žŒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๐ŸŒž HGU HACKATHON norithon.com ํ•ด์ปคํ†ค ๋””๋ ‰ํ„ฐ์ด์ž ์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ ๋ฆฌ๋”๋กœ 3๊ฐœ์›”์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค! ์›น ๊ฐœ๋ฐœ์€ ํ•œ๋‹ฌ์ •๋„๋ฅผ ์ผ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์— ๋Œ€ํ•œ ํ•œ์ค„ ์š”์•ฝ์€..! ํ™˜์ƒ์˜ ํŒ€์›Œํฌ์™€ ํ•จ๊ป˜ ์•„์ฃผ ์„ฑ๊ณต์ ์ธ ํ”„๋กœ์ ํŠธ์˜€๋‹ค...... ํ›„! ๊ฐ™์ด ๋‚˜๋ˆ„๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ๋‚ด์šฉ๋“ค์„ ๊ฐ์ž ์ •๋ฆฌํ•ด์„œ ์˜ค๋Š˜ ํ•จ๊ป˜ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค :) ์•„๋ž˜๋Š” ์ œ๊ฐ€ ํ”„๋กœ์ ํŠธ ํ•˜๋ฉด์„œ ํฌ์ŠคํŒ… ํ–ˆ๋˜ ๊ธ€๋“ค + ์ด๋ฒˆ์— ํšŒ๊ณ ๋ฅผ ์œ„ํ•ด ๋…ธ์…˜์— ์ผ๋˜ ๋‚ด์šฉ ์˜ฎ๊ธด ๊ธ€๋“ค์ธ๋ฐ ํ•œ๋ฒˆ ๋ชจ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ํด๋”๊ตฌ์กฐ์˜ ์ •์„์ด ์žˆ์„๊นŒ ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋”ฉํ•œ src ํด๋” ์‚ฌ์‹ค ๋…ธ๋งˆ๋“œ์ฝ”๋”๋ฅผ ๋”ฐ๋ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—.. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๊ทธ ์•ˆ์—์„œ ์ถฉ๋ถ„ํžˆ ์ปค๋ฒ„๊ฐ€ ๊ฐ€๋Šฅ..
์ธ๋„ค์ผ [ํžˆํž‰ .. ํžˆ..ํž‰ใ…Ž] Foundations - Color ๋‚ด๊ฐ€ ์˜ˆ์ „๋ถ€ํ„ฐ ๋ณด๊ณ ์‹ถ๋˜ ํŒŒํŠธ !!! ใ…Žใ…Ž ๋””์ž์ธ์‹œ์Šคํ…œ์—์„œ ์ปฌ๋Ÿฌ ์ง€์ •์€ ์•„์ฃผ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๊ด€ํ•ด ์• ํ”Œ์ด ๊ณต์‹์ ์œผ๋กœ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ์น˜๋งŒ ๋จผ์ € ์ฝ์œผ๋ฉด ์žฌ๋ฏธ์—†์œผ๋‹ˆ๊นŒ ,,, ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถ€ํ–ˆ๋‹ค ์‚ฌ์‹ค ๋’ค์— ๋‹คํฌ๋ชจ๋“œ๋ž‘ ํƒ€์ดํฌ๋„ ์ƒ๋‹นํžˆ ๊ถ๊ธˆ ๐Ÿ‘€ Color Judicious use of color can enhance communication, evoke your brand, provide visual continuity, communicate status and feedback, and help people understand information. ์ƒ‰์ƒ์˜ ํ˜„๋ช…ํ•œ ์‚ฌ์šฉ์€ ์˜์‚ฌ์†Œํ†ต์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ๋ธŒ๋žœ๋“œ๋ฅผ ํ™˜๊ธฐ์‹œํ‚ค๋ฉฐ, ์‹œ๊ฐ์  ์—ฐ์†์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ์ƒํƒœ์™€ ํ”ผ๋“œ๋ฐฑ์„ ์ „๋‹ฌํ•˜๋ฉฐ, ์‚ฌ๋žŒ๋“ค์ด ์ •๋ณด๋ฅผ ์ด..
์ธ๋„ค์ผ Firebase ๋ณด์•ˆ๊ทœ์น™ ์ˆ˜์ • : ํŒŒ์ด์–ด๋ฒ ์ด์Šค์— ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค ๋ฉ”์ผ ์˜ฌ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํŒŒ๋ฒ  ๋ณด์•ˆ๊ทœ์น™ ๋ณด์•ˆ ๊ทœ์น™ ์‹œ์ž‘ํ•˜๊ธฐ | Firestore | Google Cloud ๋ณด์•ˆ ๊ทœ์น™ ์‹œ์ž‘ํ•˜๊ธฐ | Firestore | Google Cloud ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ๋ณด์•ˆ ๊ทœ์น™ ์‹œ์ž‘ํ•˜๊ธฐ Firestore ๋ณด์•ˆ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„ ์ธก ์ธ์ฆ ๋ฐ ์Šน์ธ cloud.google.com ์ •๋ง ์ง•๊ธ€์ง•๊ธ€ํ•˜๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ๊ดด๋กญํžˆ๋˜ firebase ๋ณด์•ˆ๊ทœ์น™์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค (๊ณ„์† ๊ฒฝ๊ณ ํ•˜๋‹ˆ๊นŒ ๋ถˆ์•ˆํ–ˆ์Šด ๐Ÿฅฒ ๊ฒฝ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๊ตฌ๊ธ€์”จ) 1. ๋ณด์•ˆ๊ทœ์น™ ๋ฒ„์ „ ์ž‘์„ฑ rules_version = '2'; ๊ธฐ์กด์˜ rules_version = '1' ์€ ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•œ ๊ฐœ ํ˜น์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ path๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์œ ..
์ธ๋„ค์ผ [ํžˆํž‰ .. ํžˆ..ํž‰ใ…Ž] Foundations - Branding Branding Apps and games express their unique brand identity in ways that make them instantly recognizable while feeling at home on the platform and giving people a consistent experience. ์•ฑ๊ณผ ๊ฒŒ์ž„์€ ํ”Œ๋žซํผ์—์„œ ํŽธ์•ˆํ•จ์„ ๋А๋ผ๋ฉด์„œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ผ๊ด€๋œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋“ค์˜ ๊ณ ์œ ํ•œ ๋ธŒ๋žœ๋“œ ์ •์ฒด์„ฑ์„ ํ‘œํ˜„ํ•œ๋‹ค. ๐Ÿค” ๋ธŒ๋žœ๋”ฉ์˜ ์ •์˜์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๊ฒŒ๋” ํ•˜๋Š” ๋ฌธ์žฅ์ด์—ˆ๋‹ค. * ๋ธŒ๋žœ๋“œ๋ž€ ? “์ œ์กฐ์—…์ž ๋˜๋Š” ํŒ๋งค์—…์ž๊ฐ€ ์ž๊ธฐ์˜ ์ œํ’ˆ ๋˜๋Š” ์„œ๋น„์Šค์— ์ •์ฒด์„ฑ์„ ๋ถ€์—ฌํ•˜๊ณ  ๊ฒฝ์Ÿ์—…์ž์˜ ์ œํ’ˆ์ด๋‚˜ ์„œ๋น„์Šค์™€ ์ฐจ๋ณ„ํ™”ํ•˜์—ฌ ๊ณ ๊ฐ๋“ค์— ์˜ํ•ด ๊ตฌ๋ณ„๋˜๊ฒŒ ํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„, ์šฉ์–ด, ์ˆซ..
์ธ๋„ค์ผ [ํžˆํž‰ .. ํžˆ..ํž‰ใ…Ž] Foundations - App icons App icons A unique, memorable icon communicates the purpose and personality of your experience and can help people recognize your app or game at a glance in the App Store and on their devices. ๋…ํŠนํ•˜๊ณ  ๊ธฐ์–ต์— ๋‚จ๋Š” ์•„์ด์ฝ˜์€ ๋‹น์‹ ์˜ ๊ฒฝํ—˜์˜ ๋ชฉ์ ๊ณผ ์„ฑ๊ฒฉ์„ ์ „๋‹ฌํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์•ฑ ์Šคํ† ์–ด์™€ ๊ทธ๋“ค์˜ ๊ธฐ๊ธฐ์—์„œ ๋‹น์‹ ์˜ ์•ฑ์ด๋‚˜ ๊ฒŒ์ž„์„ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Beautiful app icons are an important part of the user experience on all Apple platforms and every app and g..