# Week7 S4
## ๐ ์บ ํผ.sorted { $0.id < $1.id }
| ์บ ํผ | ์ด๋ชจ์ง |์ค๋ช
|
| :-: | :--: | :-: |
| `S002 ๊ฐ๋ฏผ์` | ๐ป | ์คํ๋ฒ
์ค์๋ฌ (๊ด์
๋ณด์ด~) |
| `S005 ๊น๋์ฐ` | ๐ป | ๐ป๐ป๐ป๐ป๐ป์ ์ ๊น๋ถ ใ
ใ
(๋ถ์ฒ ๋ณด์ด~) |
| `S012 ๊น์ฐ์ฌ` | ๐ป | ๋๋ฆฝ ์ฒ์ฌ (์์ ๋ณด์ด~) |
| `S014 ๊นํํ` | ๐ | ์ฌ๋ฐ๋ ๋ถ์บ ๊ธฐํญ์ (์ธ์ฒ ๋ณด์ด~) |
| `S018 ๋ฐ์๊ด` | ๐ | ๋ถ์บ ํต์ธ์ธ ์์ํ (๊ด์ง ๋ณด์ด~) |
| `S021 ๋ฐ์ ์` | ๐ | ๋ฆฌ๋๋ฏธ ๊ฑธ~ (๋ณด๋ผ๋งค ๊ฑธ~) |
| `S036 ์ด๋์ ` | โ๏ธ | ๋ฐ๋ค๋ณด๋ฉด์ ์ฝ๋ฉ์ค (์ ์ฃผ ๊ฑธ~) |
| `S047 ์ด์ฒญ์` | ๐ฑ | ๊ณ ์๋ ๋ชจ์๋ ์ค (์์ฐ ๋ณด์ด~) |
</br></br>
## ๐๐ป @required ์ฌ๋์๊ฐ
- [x] 14:15 ~ 14:30
- [x] 15:30 ~ 15:45
- [x] 16:10 ~ 16:30
</br></br>
## ๐ก ์ฃผ์
### 1. ํ์
#### ํ์
๋ฐฉ๋ฒ
- Jira(L?) ๋ฅผ ์ฌ์ฉํ๋ ํ๋ ์์(Atlassian)
- ๊ฑฐ์ฐฝํด์ ๊ตณ์ด ๋์ด์ ํ๊ธฐ์ ๋ณ๋ก์๋ ๊ฒ ๊ฐ๋ค
- publicํ๊ฒ ํ ๋ ๊นํ๋ธ ๊ด๋ฆฌ๋ฅผ ์ ํ๋ฉด ์ข๊ฒ ์ผ๋ ์ด๋ฒ ํ๋ก์ ํธ๋ private์ด๋ผ ๋
ธ์
์ ํ์ฉํ๋ ํ์ด ๋ง์๋ค.
- ```๋ฏผ์ & ์๊ด``` : ์ฐ๋ฆฌํ์ 2๋ช
์ด๊ณ ๊ท๋ชจ๋ ์๊ธฐ ๋๋ฌธ์ github project, issues๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์์ต๋๋ค. ๋ํ ์ผ์ ๊ด๋ฆฌ๋ฅผ ๋
ธ์
์ ์ฌ์ฉํ์ต๋๋ค.
- ```๋์ & ํํ``` : ๋
ธ์
์ ํฐ ๊ณํ์ ์ ๋ฆฌํ๊ณ ์ฒดํฌํ๋ฉด์ ์งํํ์ต๋๋ค. ๊ฐ๋ฐ์ ํ์๊ฐ ๋จ์๋ก ๊ฐ๋ฐ ํ ์ฝ๋ ํฉ์น๋ ์์ผ๋ก ํ์
- ```์ฐ์ฌ & ์ฒญ์``` : driver, navigater ๋ฅผ 3, 4์๊ฐ ๋จ์๋ก ๋ฐ๋ณตํ์ต๋๋ค.
- ```๋์ฐ & ์ ์``` : Notion์ timeline ๊ฐ๋ฅ์ ์ด์ฉํ์ฌ ๊ณํ์ ์ธ์ ๊ณ ํด๋นํ๋ ํ์ด์ง์ ํ์ตํ ๋ด์ฉ์ ๋จ๊ฒผ์ต๋๋ค. ๋ํ, ์๋ก๊ฐ ๊ทธ๋๊ทธ๋ ์ ํ ๊ธฐ๋ฅ์ ๊ธฐ์ค์ผ๋ก ํฉ์น๋ ์์ผ๋ก ํ์
ํ์์ต๋๋ค.
#### StoryBoard ๋ถ๋ฆฌ? (reference?)
- ```๋ฏผ์ & ์๊ด``` : ์คํ ๋ฆฌ ๋ณด๋๋ก ์ฐ๋ํธ! ์คํ ๋ฆฌ ๋ณด๋๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ์์ ์ git conflict๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์คํ ๋ฆฌ๋ณด๋๋ ๋ฏผ์๋์ด ๋ด๋นํ์์ต๋๋ค.
- ```๋์ & ํํ``` : storyboard reference ์๋ํด๋ดค์ง๋ง ์คํจ ใ
- ```์ฐ์ฌ & ์ฒญ์``` : ์คํ ๋ฆฌ๋ณด๋๋ฅผ ๊ฑด๋๋ฆฌ๋ ์์
์ ์งํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ๊ณ ๋ก์ง๋ง ๊ฐ์ ์์
- ```๋์ฐ & ์ ์``` : 100% ์ฝ๋๋ก๋ง ๊ตฌํํด๋ณด๋ ๊ฒ์ ๋์ ์ค์
๋๋ค (๐ ๋ฆฌ์คํ...),
- SnapKit ์ฌ์ฉํ๋ค๊ฐ (๋ฆฌ๋ทฐ๋ฅผ ๋ฃ๊ณ ) ๊ธฐ๋ณธ autolayout ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
#### ํ๋ฉด๋จ์, ๊ธฐ๋ฅ๋จ์? ์ด๋ค ๋จ์๋ก ๋๋ ์ ์์
ํ๋์ง
- ```๋ฏผ์ & ์๊ด``` : ๋ฉ์ธ ํ๋ฉด์์๋ ์๋ก ๊ฐ์ด ์ง๊ณ ๊ทธ ์ดํ์ ์ค๋ณต๋๋ ์์
๋ค์ ๋๋ ์ ํ์ต๋๋ค.
- ```๋์ & ํํ``` : Model, View Model ๋ฅผ ํ๋ช
์ด ์์
ํ๋ฉด ํ๋ช
์ด View Controller ์ UI ๋ฅผ ์์
ํ์ต๋๋ค.
- ```์ฐ์ฌ & ์ฒญ์``` : ํ์ด ํ๋ก๊ทธ๋๋ฐ ์์ฃผ๋ก ์งํํ๋ค๊ฐ ๊ฐ์ ์ปจ๋์
๋ฐ๋ผ์ ํน์ ๊ธฐ๋ฅ์ ์ ๋ดํด์ ์งํํ์ต๋๋ค.
- ```๋์ฐ & ์ ์``` : ํ๋ช
์ด ํ๋ฉด ์์
์ ํ ๋ ํ๋ช
์ ๊ธฐ๋ฅ ์์
์ ํ๊ธฐ๋ ํ๊ณ , ๊ฐ์ ๊ฐ์ ํ๋ฉด์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์์
ํ๊ธฐ๋ ํ์ต๋๋ค! ๊ธฐ๋ฅ ์์
, ๋ถ๋ฆฌ ์์
์ผ๋ก ๋๋๊ธฐ๋ ํ๊ตฌ์!
</br>
### 2. Kingfisher, Alamofire ์ฌ์ฉํ ์ด์
- ```๋ฏผ์ & ์๊ด``` : ๋ ๋ค ์ฌ์ฉํ ์ด์ ๋ ์์จ๋ดค์๊ธฐ ๋๋ฌธ. ์ด๋ฏธ์ง ์บ์ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํด๋ดค๋ค. ๋ํ, ํ์
์์ ๋ง์ด ์ฌ์ฉํ๊ธฐ๋ ํ๊ณ ํ์ฅ ๊ฐ๋ฅ์ฑ ๋๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋์๋ค.
- ```๋์ & ํํ``` : ํธํ๊ฒ ๋ค์ด๋ก๋ ํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํจ.
- ํนํผ์
์ imagedownload ์ฌ์ฉ(Disk Cache), default method ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํด์ ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง๋ Disk ๋ก ํ๋๊ฒ ์ข์ ๋ฏ (์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ธฐ๊ฐ ๋จ์๋ก ๊ฐ๋ค๊ฐ ์ฑ์ด ์ฃฝ์๋ ๊ฒฝํ์ด...ใ
)
- 1. Alamofire 2. Kingfisher 3. Snapkit ์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์๊ฐ
- ```์ฐ์ฌ & ์ฒญ์``` : ํ์ต์ ์ํด์ ์ง์ ๊ตฌํํ์๋ ์๊ฒฌ(์ฒญ์)๊ณผ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ถ๊ธ์ฆ์ด ์์ผ๋ ์ฌ์ฉํด๋ณด์๋ ์๊ฒฌ(์ฐ์ฌ)์ด ๊ฐ๋ ธ์.
- ์จ๋ฐ ์ฑ์์ ์ด๋ฏธ URLSession์ผ๋ก ์ง์ ๊ตฌํ์ ํด๋ณด๊ธฐ๋ ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด๋๊ฒ ์์ฒด๋ ์ข์ ๊ฒฝํ์ด๋ผ๊ณ ๊ฒฐ๋ก ์ ๋ด๋ ค์ ๊ฒฐ๊ตญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํจ
- ```๋์ฐ & ์ ์``` : ์ ํฌ๋ ๋ ๋ค ์์จ๋ด์ ์ฌ์ฉํด๋ณด๊ณ ์ ํจ. ์ถ๊ฐ๋ก ํ์
์์ ์ฌ์ฉํ๋ ๊ณณ๋ ๊ฝค ์๋ค๋ ์ด์ ๋ ์์์ต๋๋ค!
</br>
### 3. ๊นํ๋ธ
#### conflict ํด๊ฒฐ
- ```๋ฏผ์ & ์๊ด``` : ๊ฐ์ ๋ธ๋์น๋ฅผ ๋ก์ปฌ์์ push & merge
- ```๋์ & ํํ``` : github ์น ์๋ํฐ๋ก ์์ , local์์ rebase ์๋ฌ ๋๋ฉด cmd๋ก ํ์ธํ xcode์์ ์์ , [๊น Fork](https://git-fork.com/) ์ดํ์ฌ์ฉ
- ```์ฐ์ฌ & ์ฒญ์``` : ์ง ํ๋ก๊ทธ๋๋ฐ์ด ๋ฉ์ธ์ด์ด์ ์ถฉ๋๋ ์ผ์ด ๊ฑฐ์ ์์์. ์ถฉ๋์ด ๋๋ฉด [๊นํฌ๋ผ์ผ](https://www.gitkraken.com)์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ
- ```๋์ฐ & ์ ์``` : local์์ develop branch fetch rebaseํ๊ณ ๊ฐ์ ๊ธฐ๋ฅ๋ณ feat ๋ธ๋์น๋ก ์์
ํ์์ต๋๋ค. xcode์์ ์์ ํ fetch & rebaseํ์ฌ conflict๋ฅผ ํด๊ฒฐํ๊ณ push. ๊ทธ ํ develop์ผ๋ก pr์ ๋ณด๋ด rebase and mergeํ๋ค.
#### ๋ธ๋์น ์ ๋ต
- ```๋ฏผ์ & ์๊ด``` : origin ์ ํ๋์ ๋ธ๋์น๋ฅผ local ์์ push, pull ํ๋ ๋ฐฉ์์ ์ ์ฉ
- ```๋์ & ํํ``` : ํ๋์ ๋ธ๋์น๋ฅผ main์ฒ๋ผ ์ฌ์ฉํ๊ณ origin ์ผ๋ก pr ์ ๋ ๋ฆฌ๋ ๋ฐฉ์ ์ฌ์ฉ
- ```์ฐ์ฌ & ์ฒญ์``` : ํ๋์ ์๊ฒฉ๋ธ๋์น๋ฅผ ๊ฐ๊ฐ ๋ก์ปฌ ๋ธ๋์น์ ๋ฐ์์์ pull, push๋ฅผ ๋ฐ๋ณต
- ```๋์ฐ & ์ ์``` : S08A, develop, feat์ผ๋ก ๋๋์ด ๊ธฐ๋ฅ๋ณ feat์์ ์์
ํ develop์ผ๋ก pr์ ๋ณด๋ด์ ํฉ์ณค์ต๋๋ค! ์ด๋ ๊ฒํ๋ฉด ๋์์์
๋ ํธํ๋๋ผ๊ตฌ์!
#### Rebase and merge ์ธ์๋...
- `pull`์ด ์๋๋ผ `fetch & rebase` ํ conflict ํด๊ฒฐํ๋ฉด ๋๊ธดํ๋๋ฐ `pull(fetch + merge)`๊ณผ `fetch + rebase` ์ด ๋์ ์ฐจ์ด๊ฐ ์๋์ง์ถ๋ค์!
- fetch & rebase ์ํ๊ณ ๊ณ์ ์ปค๋ฐํ๋ค๊ฐ ๋์ค์ fetch & rebaseํด๋ ๋จนํ๋์?
- ์ผ๋จ ์์
ํ commitํ๊ณ fetch & rebaseํด๋ ๋ฉ๋๋ค!! ๊ทธ๋๋ ์์
์์ ์ ์ ํ๋ฉด ๋ ์ข์ง ์์๊น์?? ๐ค
</br></br>
### 4. ํ๋ก์ ํธ ๊ตฌ์กฐ
#### ๋์์ธ ํจํด ์ฌ์ฉ (JK-iOS Clean Architecture)
- ```๋ฏผ์ & ์๊ด``` : MVC ํจํด
- ```๋์ & ํํ``` : MVVM ํจํด
- ```์ฐ์ฌ & ์ฒญ์``` : MVC -> MVVM ํจํด
- Repository๋ reachability์ ๋ฐ๋ผ data source(remote/local)๋ฅผ ์์์ ๊ฒฐ์ ํ๋ ๊ฐ์ฒด์ธ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ด๋ฒ ํ๋ก์ ํธ๋ ๊ทธ๋ฐ ์๊ตฌ์ฌํญ์ด ์์ด repository๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ ์ฆ์ผ์ด์ค๋ฅผ ํตํด ๋คํธ์ํฌ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค.
- ```๋์ฐ & ์ ์``` : MVC -> JK-iOS Clean Architecture ํจํด
- ํ์ฌ Repository๊ฐ Network, Storage๋ฅผ ์์กดํ๋๋ฐ ๋ฐ๋๋ก ์์กดํ๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
#### Cocoapods vs SPM vs Carthage ์ ํ ๊ธฐ์ค
- ```๋ฏผ์ & ์๊ด``` : Cocoapods, M1 ์ด์๋ ์๊ณ ์ ์ผ ์ฌ์ธ ๊ฒ ๊ฐ์์ ์ ํํ์๋ค.
- ```๋์ & ํํ``` : Cocoapods, ์ ํฌ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ์ ํ ํจํค์ง ๋งค๋์ ๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
- ```์ฐ์ฌ & ์ฒญ์``` : SPM, Cocoapods์ ์ฌ์ฉํ ๋ M1 ์ด์๊ฐ ์๊ฒจ์ ๋ณ๊ฒฝํ๋๋ฐ SPM์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์๋ค.
- ์ฅ์ : ์ค์น๊ฐ ๊ฐ๋จํจ, xcworkspace๋ฅผ ์ฌ์ฉํ์ง ์๊ณ xcodeproj๋ก ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ๋จ์ : Cocoapods์ ์ง์ํ์ง๋ง SPM์ ์ง์ํ์ง ์๋ ํจํค์ง๊ฐ ์์์
- pod์ ๋ชจ๋ ํ๊ฒ์ import๋๋๋ฐ swiftPackage๋ ์ํ๋ ํ๊ฒ๋ง import ๋๋ค?!
- ```๋์ฐ & ์ ์``` : Cocoapods, ์๋ ์ด์ผ๊ธฐ์ผ ์ ์์ง๋ง.. SPM์๋ ์ง์ํ์ง ์๋ ํจํค์ง๊ฐ ๋ง๋ค๋ ์ด์ผ๊ธฐ์ Cocoapods์ ์ด์ฉํด์ผ๊ฒ ๋ค ์๊ฐํ์ต๋๋ค.
</br></br>
## ๐ ์๊ฐ
- `S002 ๊ฐ๋ฏผ์` ๐ง๐ปโ๐ป : ํ์ดํ๋ก๊ทธ๋๋ฐ์ ์ฒ์ ํด๋ดค๋๋ฐ ๋๋ถ์ ๊น๋ถ์นํจ๋ ๊ฐ์ด ๋จน์ ์น๊ตฌ๊ฐ ์๊ฒจ ๋งค์ฐ ์ข์์ต๋๋ค.
- `S005 ๊น๋์ฐ` ๐ป : ์ ๋ ๊น๋ถ๋ ๊ฐ์ด ํ๋ก์ ํธ ํด์ ๋๋ฌด ์ฌ๋ฏธ์๋ ํ์ฃผ์์ต๋๋ค! ์ ๋ ๋ค์์ฃผ ๊ธฐ๋๋์~~~
- `S012 ๊น์ฐ์ฌ` ๐ป: ์ฌ๋ฌ๋ฒ์ ๋๋ฒ๊น
์ ํตํด ๋จ์ ์ฝ๋๋ฅผ ๋ถ์ํ๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅด๊ฒ ๋์์ต๋๋ค!!
- `S036 ์ด๋์ ` โ๏ธ : ์งํ๋ก๊ทธ๋๋ฐ์ ์ฒ์์ผ๋ก ํด๋ณผ ์ ์๋ ์๊ฐ์ด์์ต๋๋ค. ํ์
์ ํด๋ณผ์๋ก ๋๋๊ฒ ๊ฐ์์! ์ฌ๋ฏธ์์์ต๋๋ค.
- `S014 ๊นํํ` ๐ : ์ฌ๋ฏธ์๋ ์๊ฐ์ด์์ต๋๋ค~
- `S018 ๋ฐ์๊ด` ๐ : ์์ธ ๊ธ์์ผ ์ฃผ๋ง์ ์ฌ์ง๋กฑ~ `์บ ํผ.map { $0.์๊ฐ }`
- `S021 ๋ฐ์ ์` ๐ : ๊น๋ถ๋ ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ~ ๋๋ฌด ์ฌ๋ฐ์์ต๋๋ค! ๋ค์๋์ฃผ๋ ๋๋ฌด ๊ธฐ๋๋๋ค์!!
- `S047 ์ด์ฒญ์` ๐ฑ : ๋ถ์บ ์์์ ์ฒซ ํ์
์ด์๋๋ฐ ๊น๋ถ ํ๋ก๊ทธ๋๋ฐ์ด ์ ๋ง ์ฌ๋ฐ์ ์ ์๋ค๋๊ฑธ ๊นจ๋ฌ์์ต๋๋ค!
</br></br>
## ๐ฏ ๊ฟํ
- ์นด์นด์ค, ๋ฑ
ํฌ์๋ฌ๋, ์ธ์คํ๊ทธ๋จ ์ดํ ๋ค์ด๊ฐ๋ฉด ```์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ``` ํ์ธ ๊ฐ๋ฅ
- Git ๊ด๋ฆฌํด
- [๊น Fork](https://git-fork.com)
- [๊นํฌ๋ผ์ผ](https://www.gitkraken.com)