[ ๋ธ๋์น ๋ชฉ๋ก ์กฐํ ] master์์ develop, feature1, feature2 ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ feature2 ๋ธ๋์น๋ง ๋นผ๊ณ ์๊ฒฉ์ ์ฌ๋ ค์ค ์ํ์์ ์งํํ๊ฒ ์ต๋๋ค. 1. local ๋ธ๋์น ๋ชฉ๋ก ์กฐํ (with no flag) git branch 2. remote ๋ธ๋์น ๋ชฉ๋ก ์กฐํ (with remote flag) git branch -r 3. ๋ชจ๋ ๋ธ๋์น(๋ก์ปฌ + ์๊ฒฉ) ๋ชฉ๋ก ์กฐํ (with all flag) git branch -a [ ๋จธ์ง๋ ๋ธ๋์น ๋ชฉ๋ก ์กฐํ ] feature1์ develop์ ๋จธ์งํ ์ํฉ์ ๋๋ค. develop์ ๋จธ์ง๋ ๋ธ๋์น ๋ชฉ๋ก์ ์กฐํํ ๋ git branch --merged develop feature2์ ๋จธ์ง๋ ๋ธ๋์น ๋ชฉ๋ก์ ์กฐํํ ๋ git branch --me..

[1] Gitignore ํ์ผ ๋ง๋ค๊ธฐ touch .gitignore [2] gitignore์ ๋ด์ฉ ์ ๋ ฅ github.com/github/gitignore ์ฌ๊ธฐ์ ๊ฐ ํ๊ฒฝ์ ๋ง๋ ์ฝ๋๋ฅผ ๋ณต๋ถํด์ ์์์ ๋ง๋ gitignoreํ์ผ์ ๋ณต๋ถํด์ฃผ๋ฉด ๋๋ค. Xcode.gitignore๋ Swift.gitignore์ด ๋ฐ๋ก ์์ง๋ง Swift.gitignore์๋ Xcode.gitignore ๋ด์ฉ๋ ๋ค์ด์๊ธฐ๋๋ฌธ์ Swift.gitignore๋ง ๋ณต๋ถํด์ฃผ๋ฉด ๋๋ค. (์ฐธ๊ณ ๋ก python.gitignore์๋ ์ฅ๊ณ ๊ด๋ จ ๋ด์ฉ๋ค์ด ๋ค์ด๊ฐ์๋ค.) www.toptal.com/developers/gitignore ์ด ์ฌ์ดํธ์ ๋ค์ด๊ฐ์ gitignore ๋ด์ฉ์ ๊ตฌํด๋ ๋๋ค. [3] 2๋ฒ์ ๋ด์ฉ์ด์ธ์ ๋ด๊ฐ ๋ฌด์ํ ๊ฒ์ ์ค์ ํ ๋ git..

์ด ๊ธ์ 2017, 2018๋ ๋ธ๋ก์ฒด์ธ ํํ ํ๋๋ ๊ณต๋ถํ ๊ฒ์ ์ฎ๊ธด ๊ธ๋ก ์ง๊ธ์ ์ ๋ฐ์ดํธ๋ ๋ถ๋ถ์ด ์์ ์ ์์ผ๋ ์ ์ํด์ฃผ์ธ์. ๋ํ ์ฌ์ง์ ์ถ์ฒ๋ฅผ ๋ช ์ํ์ง ๋ชปํ ์ ์ ๋ง ์ฃ์กํฉ๋๋ค. (์๋ ๋ฐํ์๋ฃ์์ ๊ฐ์ ธ์จ ์ฌ์ง์ธ๋ฐ ์ถ์ฒ๊ฐ ํ๊ธฐ์๋์ด์๋ค์ใ ใ ใ ) [1] Dapp ์ด๋? ์ด๋๋ฆฌ์ ํ๋ซํผ์์ ๋์๊ฐ๋ decentralized web application์ Dapp์ด๋ผ๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์ ํต์ฌ์ ํ์ค์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ์ ์ ๋๋ค. ๋ํ์ ์ธ DApp์ผ๋ก ํฌ๋ฆฝํ ํคํฐ, MaidSafe๊ฐ ์์ต๋๋ค. (2017 ๊ธฐ์ค) [2] Dapp ๊ตฌ์กฐ ๊ทธ๋ผ Dapp์ ์ด๋ป๊ฒ ๋์ํ๋ ๊ฒ์ผ๊น์?!? ์ฐ์ ๊ธฐ์กด ์น์ฑ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋น๊ต๋ฅผ ์ํด Web app ๋ถํฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1) Web App ๊ธฐ์กด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ..

์ด ๊ธ์ 2017, 2018๋ ๋ธ๋ก์ฒด์ธ ํํ ํ๋๋ ๊ณต๋ถํ ๊ฒ์ ์ฎ๊ธด ๊ธ๋ก ์ง๊ธ์ ์ ๋ฐ์ดํธ๋ ๋ถ๋ถ์ด ์์ ์ ์์ผ๋ ์ ์ํด์ฃผ์ธ์. [1] ๋ธ๋ก์ฒด์ธ์ด๋? ๋ธ๋ก์ฒด์ธ์ด๋ ๋ฌด์์ผ๊น์?! ๋ง๊ทธ๋๋ก ๋ธ๋ก + ์ฒด์ธ ์ ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ฌ๋ฌ ๋ธ๋ก๋ค์ด ์ด์ด์ ธ์ ๋ง๋ค์ด์ง ๋ธ๋ก์ ์งํฉ์ฒด๋ฅผ ๋ธ๋ก์ฒด์ธ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๋ธ๋ก์ ์ฝ๊ฒ ๋งํ๋ฉด ์ ํจํ ๊ฑฐ๋์ ๋ณด์ ๋ฌถ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์๋์์ ๋ธ๋ก์์ ์ด๋ค ๊ฒ๋ค์ด ์๋ ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. [2] ๋ธ๋ก์ ๊ตฌ์กฐ ๋ธ๋ก์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ด ์๋ค. 1) ๋ธ๋กํด์ฌ ์ฐ์ ๋ธ๋กํด์ฌ๋ ๋ธ๋ก์ ์๋ณ์ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฆ์ ๋ธ๋ก ํด์ฌ์ด์ง๋ง ๊ทธ ๊ฐ์ ๋ธ๋ก ์ ์ฒด๋ฅผ ํด์ฌํ ๊ฐ์ด ์๋๋ผ, ๋ธ๋ก ํค๋๋ฅผ ํด์ฌํ ๊ฐ์ ๋๋ค. ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๋ฉด , ๋ธ๋ก ํด์ฌ๋ 6๊ฐ์ง์ ๋ธ๋ก ํค๋ ์ ๋ณด๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ํ๊ณ , ..
์ด ๊ธ์ ๊ณ ๋ ค๋ํ๊ต ๊นํ์ฒ ๊ต์๋์ ์ธ๊ณต์ง๋ฅ ์์ (2016๋ ) ๊ฐ์์๋ฃ๋ฅผ ํ ๋๋ก ํ๊ณ ์์ต๋๋ค. ๋๋ฌด ์ข์ ๊ฐ์์ฌ์ ํ๋ฆฐํธ๋ฌผ์ ์์ง๋ ๊ฐ์งํ๊ณ ์์๋๋ฐ, ๋ค์ ์ ๋ฆฌ๋ ํ๊ณ ํ๋ฆฐํธ๋ฌผ์ ๋ณด๋ด์ฃผ๋ ค๊ณ ๊ธ์ ์ ์ต๋๋ค. ํน์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์ [1] ๋จธ์ ๋ฌ๋ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ 1) ์ง์ ๊ธฐ๋ฐ ๋ฐฉ์ (expert system) ์ ๋ฌธ๊ฐ์ ์ง์์ ์ถ์ถํด์ ๋ชจ๋ธ์ ๋ง๋๋ ๋ฐฉ์ ์ ๋๋ค. ์ด ๋ฐฉ์์ ํ๊ณ๋ ๋ฌด์์ผ๊น์?! - incomplete - inconsistent - fuzzy (์ ๋งคํ, ๋ถ๋ถ๋ช ํ) ์ค์ง ์ ๋ฌธ๊ฐ์ ๊ฒฝํ์๋ง ์์กดํ๊ณ ์ ๋ฌธ๊ฐ๊ฐ ๊ฒฝํํ ๋ฐ์ดํฐ ์๋ ์ ๊ธฐ ๋๋ฌธ์ ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋๋ค. 2) ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋ฐฉ์ ๋ฐ์ดํฐ๋ก๋ถํฐ ์ง์์ ์ถ์ถํด์ ๋ชจ๋ธ์ ๋ง๋๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์๋ ํ์ง ์ข๊ณ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๊ผญ ์์ด์ผํ..

๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋จธ์ ๋ฌ๋ https://firebase.google.com/products/ml-kit/?authuser=0 Firebase ML Kit๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ จ๋ ๋จธ์ ๋ฌ๋ ๊ฐ๋ฐ์๋ ์ด์ ๋ง ์์ํ ์ด๋ณด์๋ ๊ด๊ณ์์ด ๊ฐ๋ ฅํ ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฅ์ Android์ฉ ๋๋ iOS์ฉ ์ฑ์ ๋์ ํ ์ ์์ต๋๋ค. firebase.google.com ML Kit๋ ๊ธฐ๊ธฐ๋ณ API ์ Cloud API๊ฐ ์๋ค. ๊ธฐ๊ธฐ๋ณ API๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ณ , ๋คํธ์ํฌ ์ฐ๊ฒฐ ์์ด ์๋ํ๋ฉฐ, ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ API๋ Google Cloud Platform์ ๊ฐ๋ ฅํ ๋จธ์ ๋ฌ๋ ๊ธฐ์ ์ ํ์ฉํ์ฌ ๋ณด๋ค ๋์ ์ ํ๋๋ฅผ ์ ๊ณตํ๋ค๊ณ ํ๋ค..! ๊ทธ๋ฆฌ๊ณ ์ปค์คํ ๋ชจ๋ธ๋ ์ฌ์ฉํ ์ ์๋ค...!!! >__
Remote ์ ์ฅ์๋ฅผ local ์ ์ฅ์๋ก ๊ฐ์ ํ(?) ์์ผ์ฃผ๊ณ ์ถ์ ๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค ์ ๋ ์์คํธ๋ฆฌ์์ reset ๋ช ๋ น์ด๋ก local ์ ์ฅ์๋ฅผ ์ํ๋ ์ปค๋ฐ๊น์ง ์ด๊ธฐํ์์ผ์คํ ์ด ๋ช ๋ ์ด๋ฅผ ํตํด remote์ ์ฅ์๋ local ์ ์ฅ์์ ๊ฐ์์ง๊ฒ๋ ๊ฐ์ ํธ์ฌ์์ผฐ์ต๋๋ค (ํ์ ํ๋ ๊ฒฝ์ฐ, ๊ต์ฅํ ์ํํ ๋ช ๋ น์ด๊ฐ ๋ ์ ์์ต๋๋ค. ์ ๋ ์์ ์ฉ ๊ฐ์ธํ๋ก์ ํธ๋ผ์ ์งํํด์คฌ์ต๋๋ค) ์ฐธ๊ณ https://www.christianengvall.se/git-reset-origin-master-to-commit/ https://velog.io/@leehaeun0/์ค๋ฌด์์-์ ์ฉํ๋-git-๋ช ๋ น์ด-4w0oxm3e

๋ก๊ทธ์ธ๋ Auth์ signIn ํจ์๋ฉด ๊ฐ๋จํ ๋ -! FirebaseManager์ ๋ค์๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ class func login(email: String, password: String, completion: @escaping (Result) -> Void) { Auth.auth().signIn(withEmail: email, password: password) { (result, error) in if let result = result { completion(.success(result)) } else if let error = error { completion(.failure(error)) } } } LoginViewModel๋ ๊ตฌํํด์ค๋ค struct LoginViewModel { stru..

ํ์๊ฐ์ ์ Auth์ createUser๋ผ๋ ํจ์๋ง ๋ถ๋ฌ์ฃผ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค FirebaseManager์ signup ๋ฉ์๋๋ฅผ ์ถ๊ฐํด์ค๋ค extension FirebaseManager { class func signup(email: String, password: String, completion: @escaping (Result) -> Void) { Auth.auth().createUser(withEmail: email, password: password) { (result, error) in if let result = result { completion(.success(result)) } else if let error = error { completion(.failure(error)) } } ..

Firebase ์ฝ์์ ๋ค์ด๊ฐ์ ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ ์ค์ ์ ํด์ค๋๋ค --! ์ด๋ ๊ฒ ์ฌ๋ฌ ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค : ) ์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ๋ฐฉ๋ฒ์ ์ค์ ํด์ค๋๋ค ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ๋ก ์์ ๋ก๊ทธ์ธ, ํ์๊ฐ์ ํ๋ฉด์ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ค๋๋ค Podfile์ ๋ฅผ ์ถ๊ฐํ๊ณ ์ค์นํด์ค๋๋ค
- Total
- 933,554
- Today
- 238
- Yesterday
- 1,323
- METAL
- flutter ์ฑ ์ถ์
- flutter dynamic link
- ํ๋ฌํฐ ์ผ๋ฟ
- Flutter getter setter
- Flutter Clipboard
- Flutter Spacer
- DRF APIException
- Python Type Hint
- Django Heroku Scheduler
- drf custom error
- Django Firebase Cloud Messaging
- SerializerMethodField
- Watch App for iOS App vs Watch App
- PencilKit
- ๊ตฌ๊ธ Geocoding API
- Django FCM
- flutter build mode
- ipad multitasking
- github actions
- ์ฅ๊ณ URL querystring
- Flutter Text Gradient
- ์ฅ๊ณ Custom Management Command
- flutter deep link
- cocoapod
- Dart Factory
- Flutter ๋ก๋ฉ
- ribs
- Sketch ๋๋ผ
- ํ๋ฌํฐ ์ฑ๊ธํค