์์ฐ ๋์์: https://www.youtube.com/watch?v=9g9JMfP7k7Y&feature=youtu.be
- ์์ ์ธ์์ ํตํด ๋ถ์ ํ์๋ฅผ ๊ฐ์ง
- ์์์๊ฐ ๋ต์์ ์ ์ถํ ์งํ ์ฑ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ
-
- LoginViewController ๋ ์ด์์ ์์ ์๋ฃ
- MainViewController ๋ ์ด์์ ์์ ์๋ฃ
-
- DetailViewController๋ก ๋ฐ์ดํฐ ๋ก๋ ์๋ฃ
-
- Eyetracking ๊ธฐ์ ์ฐ๋ ์๋ฃ
-
- Eyetracking count ๊ธฐ๋ฅ ์ถ๊ฐ
- Eyetracking ์ดํ ์ ๊ฒฝ๊ณ ์ฐฝ ๊ธฐ๋ฅ ์ถ๊ฐ
-
- ExamViewController ๋ ์ด์์ ์์ ์๋ฃ
-
- DetailViewController ๋ ์ด์์ ์์ / ๋ฐ์ดํฐ ๋ก๋ ์๋ฃ
-
- ExamViewController ๋ฐ์ดํฐ ๋ก๋ ์๋ฃ
-
- JSON ์ฐ๋ ์์
-
- ๊ฒ์ ๊ธฐ๋ฅ ๋ ์ด์์ ์์ ์๋ฃ
-
- UserInfo ํ์ฑ ์๋ฃ
-
- LoginAPI ์ฐ๋ ์๋ฃ
-
- SignUpAPI ์ฐ๋ ์๋ฃ
-
- LoginViewController ๊ฒฝ๊ณ ์ฐฝ ์์ , ํ์ด์ง ์ด๋ ์์ ์๋ฃ
-
- ๊ฒ์ ๊ธฐ๋ฅ ๊ฒฝ๊ณ ์ฐฝ ๊ธฐ๋ฅ ์์ ์๋ฃ
- CourseInfo ํ์ฑ ์๋ฃ
- JSON ํ์ฑ ํ MainViewController Table View ์ ๋ณด ์ฝ์ ์๋ฃ
-
- Logout ๊ฒฝ๊ณ ์ฐฝ ๊ธฐ๋ฅ ์์ ์๋ฃ
-
- DetailViewController์ ๋ฐ์ดํฐ ํ์ฑ ์์ ์๋ฃ
-
- SubmitViewController ๋์์ธ ์๋ฃ
-
- Exam ๋ฐ์ดํฐ ๋ก๋ ์๋ฃ
- AnswerList SubmitViewController์ ์ ์ก
-
- ScoreViewController -> MainViewController ์ด๋ ์์ ์๋ฃ
-
- Submit ์ ๋ณด Post ์์ ์๋ฃ
-
- Score ๊ณ์ฐ ๊ธฐ๋ฅ ์์ ์๋ฃ
-
- ScoreViewController ๋ฐ์ดํฐ ๋ก๋ ์์ ์๋ฃ
-
- ์ ์ฒด์ ์ธ ๋ ์ด์์ ๊ฒํ ๋ฐ ๋ณด์
- RxSwift - Login ์์ ์๋ฃ
-
Swift
-
RxSwift
Agile Process (๊ฐ๋ฐ ์ด๊ธฐ)
- ์ ์ฒด์ ์ธ ํ๋ก์ ํธ ๊ธฐํ ๋ฐ ๊ตฌ์
Waterfall Process
- ERD ๊ตฌ์ถ
- ์ธ๋ถ ๊ธฐ๋ฅ ๊ตฌ์ถ
- SeeSo ๋ก๊ทธ์ธ (https://seeso.io)
- ๋ผ์ด์ ์ค ํค ๋ฐ๊ธ
- imontor -> ViewController -> Exam -> ExamViewController -> func cameraPermissionCheck()
func cameraPermissionCheck(){
if AVCaptureDevice .authorizationStatus(for: .video) == .authorized{
GazeTracker.initGazeTracker(license: "๋ฐ๊ธ๋ฐ์ ๋ผ์ด์ ์ค ํค", delegate: self)
} else {
AVCaptureDevice.requestAccess(for: .video, completionHandler: {
response in
if response{
GazeTracker.initGazeTracker(license: "๋ฐ๊ธ๋ฐ์ ๋ผ์ด์ ์ค ํค", delegate: self)
}
}
}
}