firebase-modify라는 feature브랜치를 만들어줍니다 프로젝트에서는 modify 대신 change라는 용어를 사용하고 있는데, change라는 네이밍을 사용하여 코딩해주겠습니다 FirebaseManager에 change함수를 추가해줍니다 수정할 메모의 키값과 새로운 메모를 받는 함수입니다 class func change(key: String, to memo: Memo) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.setValue(memo.toDictionary()) } 수정을 누르면 이렇게 AlertViewController가 떠야하므로 textfiel..
firebase-delete라는 feature 브랜치를 하나 만들어줍니다 FirebaseManager 안에 delete라는 class fucntion을 만듭니다 class func delete(key: String) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.removeValue() } delete하려면 각 데이터(메모)의 key 값을 알고 있어야합니다 현재는 Memo를 Firebase에 추가할 때 firebase가 자동으로 key값(혹은 아이디 값) 을 만들어주게 설정되어있습니다 class func add(memo: Memo) { let rootRef = Dat..
[ 사전 준비 ] develop 브랜치를 base로 feature1과 feature2를 브랜치를 만들어줬습니다. 그리고 develop에서 commit 3개를 해줍니다. feature1은 merge 커밋내역을 확인할 용도로 쓸 브랜치입니다. feature1에서 commit 2개를 해줍니다. feature2은 rebase 커밋내역을 확인할 용도로 쓸 브랜치입니다. feature2에서 commit 2개를 해줍니다. [ Merge ] feature1로 develop을 머지해보겠습니다. 트리가 이렇게 그려집니다. 줄기가 2개! (current branch를 feature1로 골라줬어요) [ Rebase ] feature2로 develop을 rebase 해보겠습니다. 트리가 이렇게 그려집니다. 줄기가 1개! (cu..
일단 feature브랜치로 firebase-fetch를 하나 만들고 작업을 시작합니다 memos의 어떤 변화든 관찰하겠다(?) 하는 코드인데, let rootRef = Database.database().reference() rootRef.child("memos").observe(.value) { snapshot in let memosDic = snapshot.value as? [String: Any] ?? [:] for (key, value) in memosDic { print("key \(key) value\(value)") } } 딕셔너리를 출력해보면 key는 자동으로 만들어준 메모의 아이디 / value는 해당메모의 속성에 대한 딕셔너리이다 key -Lfu2XqePDtQA6KcyvJs value{..
FirebaseManager 클래스를 만들고 class fuction인 add를 만들어준다 import Foundation import Firebase class FirebaseManager { class func add(memo: Memo) { let rootRef = Database.database().reference() let memosRef = rootRef.child("memos") let memoRef = memosRef.childByAutoId() memoRef.setValue(memo.toDictionary()) } } Memo 구조체에 dictionary로 바꾸는 함수도 추가해준다 struct Memo { let title: String } extension Memo { func toD..
1. firebase-setup 이라는 feature 브랜치를 만든다 2. podfile에 pod 'Firebase/Core' 를 추가한다 실시간 데이터베이스를 사용할 것이므로 pod 'Firebase/Database' 이것도 추가하고 설치해준다 3. Firebase console 에 들어가서 프로젝트를 추가한다 4. Firebase에서 친절히 알려주는 대로 설정을 해준다 5. 앱이 콘솔에 추가되면 Realtime Database를 만들어준다 테스트 모드로 설정해서 읽기 쓰기 가능하게 해준다 --! 이것은 나중에 '규칙'에서 바꿀 수 있다
Firebase를 이용하여 메모를 추가하고 수정/삭제 할 수 있는 간단한 프로젝트를 해보자 : ) 플러스버튼을 눌러서 메모를 저장하고 왼쪽 스와이프로 메모를 수정, 오른쪽 스와이프로 삭제 하도록 프로젝트를 구성하자 이렇게 MVVM 구조로 프로젝트를 짰고 Rx를 사용하였다 : ) 소스코드는 깃헙 에서 볼 수 있다 + git도 같이 연습해보기 위해 master브랜치를 따서 develop브랜치를 만들었다 그 후, feature branch들로 firebase-setup / firebase-insert / firebase-delete / firebase-change 를 만들고 develop 브랜치에 merge해가면서 작업할 것이다 --!
1. Rebase 사용 case: master 브랜치에서 branch1을 생성했다. (branch1의 base는 master의 마지막 커밋-) 근데 master 브랜치에서 어떤 VC의 이름을 바꾸고 싶어서 VC의 이름을 바꾸고 커밋했다 그러면 branch1이랑 master랑 VC이름이 달라진당---! 그 때 master 브랜치의 VC 이름바꾼 커밋으로 branch1을 rebase시켜준다 (branch1의 base는 master의 VC 이름 바꾼 커밋-) SourceTree에서 branch1을 현재 브랜치로 하고 원하는 커밋을 오른쪽 클릭하여 rebase 눌러주면 된다 :) + 아니면 merge master into 현재브랜치 해도 될 것 같다 이렇게 merge해주면 충돌이 날 것 같은데, unstaged..
브랜치 관리 전략 중 하나인 'git flow' 5가지 타입의 브랜치를 sourceTree-gitflow 에서 편하게 관리해준다 feature - feature브랜치를 따서 각 기능을 작업한 후, PR을 보낸다. develop에 merge되면 delete시키는 브랜치 develop - 승인받은 feature들만 merge되기 때문에 안전하고 굵직한 코드들이 담긴 브랜치 release - develop에서 바로 master로 가는 것이 아니다. 중간다리 역할을 해주는 브랜치 ( develop -> release -> master ) hotfixes - 급히 수정해서 출시해야할때 사용하는 브랜치 master - 출시용 브랜치 * 설명 처음에는 master와 develop 브랜치가 존재합니다. 물론 devel..
- Total
- Today
- Yesterday
- flutter 앱 출시
- 플러터 얼럿
- SerializerMethodField
- Flutter Clipboard
- flutter dynamic link
- cocoapod
- Watch App for iOS App vs Watch App
- Flutter Text Gradient
- 플러터 싱글톤
- Django FCM
- Python Type Hint
- PencilKit
- DRF APIException
- 구글 Geocoding API
- ribs
- METAL
- Flutter getter setter
- github actions
- flutter build mode
- 장고 URL querystring
- Flutter 로딩
- ipad multitasking
- Dart Factory
- drf custom error
- Flutter Spacer
- Django Firebase Cloud Messaging
- 장고 Custom Management Command
- flutter deep link
- Sketch 누끼
- 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 |