Season 1 : 23.10 ~ 23.12
Season 2 : 24.02 ~ 24.05
Season 3 : 24.08 ~ NOW
👑박동민 | 조관희 | 이태희 | 김상호 |
- 본인 이름으로 레포지토리를 생성합니다.
- feat/week1 등 새 브렌치를 만들고 해당하는 폴더를 생성하여 과제를 진행해주세요.
ex) week1 폴더 생성 및 week1 브랜치 생성 후 작업 - PR에 구현 사진 혹은 시연 영상을 포함하여야 합니다.
- 과제는 다음 스터디 시작일 하루 전까지 완료하셔야 합니다.
ex) 10월 26일 스터디 진행 -> 25일까지 과제 - 서로서로 리뷰를 달아주며 공부합니다!
매주차 : Effective Kotlin item 5개 읽고 정리해오기
2기 과제 목차
1주차 : MVI 공부해오기
2주차 ~ 3주차 : MVI + orbit을 적용한 Compose 프로젝트 클론코딩
4주차 : DO SOPT Android 1주차 Migration to Compose + MVI
5주차 : DO SOPT Android 2주차 Migration to Compose + MVI
6주차 : DO SOPT Android 3주차 Migration to Compose + MVI
7주차 : DO SOPT Android 4주차 Migration to Compose + MVI
1기 과제 목차
1주차 : 프로필 카드 구현
2주차 : 카탈로그 앱 구현
3주차 : 만족도 조사 앱 구현
4주차 : 만족도 조사 앱 with 애니메이션
6주차 : rememver vs LivdData
진행 상황 | 진행 전 | 진행 중 | 완료 | 실패 | |
👨💻 | 🔥 | 🙆♂️ | 🙅♀️ |
WEEK 1
8/12 ~ 8/18 |
Effective Kotlin 1 ~ 5 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙅♀️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 2
8/19 ~ 8/25 |
Effective Kotlin 6 ~ 10 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 3
8/26 ~ 9/1 |
Effective Kotlin 11 ~ 15 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 4
9/2 ~ 9/8 |
Effective Kotlin 16 ~ 20 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 5
9/9 ~ 9/15 |
Effective Kotlin 21 ~ 25 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 6
9/16 ~ 9/22 |
Effective Kotlin 26 ~ 30 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 7
9/23 ~ 10/3 |
Effective Kotlin 31 ~ 35 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 8
10/4 ~ 10/10 |
Effective Kotlin 36 ~ 39 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙅♀️ | |||||
WEEK 9
10/11 ~ 10/17 |
Effective Kotlin 40 ~ 44 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
시험기간이슈로 이번주는 쉬어가요~ 👨🎓 | ||||||||
WEEK 10
10/25 ~ 10/31 |
Effective Kotlin 45 ~ 48 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||
WEEK 11
11/1 ~ 11/7 |
Effective Kotlin 49 ~ 52 공부 후 정리 | |||||||
성취도 | 동민 | 관희 | 태희 | 상호 | ||||
🔥 | 🔥 | 🔥 | 🔥 | |||||
< 포항항 3기 스터디 종료!! >
여기까지 함께하신 모든분들의 열정에 박수를 보냅니다 👏 |
2기 커리큘럼
WEEK 1
2/14 ~ 2/23 |
MVI란 무엇일까? 어떻게 쓰고, 왜 쓰는지 공부해오기 | |||||||
과제 | 대면 발표 자료 준비 및 발표 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ?? | |||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | ?? | ||||
WEEK 2 ~ WEEK 3
2/24 ~ 3/5 |
Compose + orbit 프로젝트 클론코딩하기 | |||||||
과제 | 야무지게 구현해오기 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | 태희 | |||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | 🙅♀️ | ||||
WEEK 4
3/6 ~ 3/12 |
SOPT 1주차 내용 적용하여 Compose + MVI로 코드구현 | |||||||
과제 | 야무지게 구현해오기 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | 태희 | |||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | ||||
WEEK 5
3/13 ~ 3/19 |
SOPT 2주차 내용 적용하여 Compose + MVI로 코드구현 | |||||||
과제 | 야무지게 구현해오기 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | 태희 | |||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | ||||
WEEK 6
3/20 ~ 3/26 |
SOPT 3주차 내용 적용하여 Compose + MVI로 코드구현 | |||||||
과제 | 야무지게 구현해오기 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | 태희 | |||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙅♀️ | 🙆♂️ | ||||
< 중간고사 대비기간>
2주 동안 스터디도 쉬어갑니다 👋🏻 |
||||||||
WEEK 7
4/10 ~ 4/16 |
SOPT 4주차 내용 적용하여 Compose + MVI로 코드구현 | |||||||
과제 | 야무지게 구현해오기 | |||||||
성취도 | 동민 | 강희 | 관희 | 유리 | 태희 | |||
🙅♀️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | ||||
< 포항항 2기 스터디 종료!! >
여기까지 함께하신 모든분들의 열정에 박수를 보냅니다 👏 |
1기 커리큘럼
WEEK 1
10/11 ~ 10/19 |
Compose의 기본 컴포넌트들 Text, Button, Modifier, Surface, Box, Row, Column, BoxWithConstrints, Image, Network Image |
|||||||||
과제 | 프로필 카드 구현 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||||
< 중간고사 대비기간>
1주 동안 스터디도 쉬어갑니다 👋🏻 |
||||||||||
WEEK 2
10/26 ~ 11/02 |
Recomposition이란? Checkbox, TextField, TopAppBar, Slot API, Scaffold 사용법 |
|||||||||
과제 | 카탈로그 앱 구현하기 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||||
WEEK 3
11/3 ~ 11/9 |
Canvas, Dialog, Custom Dialog DropDownMenu, SnackBakr, BottomAppBar |
|||||||||
과제 | 만족도 조사 앱 구현하기 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | |||||||
WEEK 4
11/10 ~ 11/16 |
애니메이션 State와 State Hoisting |
|||||||||
과제 | 만족도 조사 앱 with 애니메이션 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙅♀️ | 🙆♂️ | 🙆♂️ | |||||||
WEEK 5
11/17 ~ 11/23 |
부수효과 1 부수효과 2 |
|||||||||
과제 | 합동세미나를 위해 쉬어갑니다! | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||||
WEEK 6
11/24 ~ 11/30 |
ViewModel, LiveData 연동 CompositionLocal, Theme |
|||||||||
과제 | Jetpack Compose에서 LiveData or Flow를 왜 remember가 있는데 쓸까? | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🙆♂️ | 🙆♂️ | 🙆♂️ | 🙆♂️ | |||||||
WEEK 7
12/01 ~ 12/07 |
네비게이션 DI(의존성 주입), Unidirectional Data Flow |
|||||||||
과제 | 앱잼 야무지게 하고 단톡방에 자랑하기!! | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
🔥 | 🔥 | 🔥 | 🔥 | |||||||
< 스터디 종료!! >
여기까지 함께하신 모든분들의 열정에 박수를 보냅니다 👏 |
||||||||||
도전과제
자율 수행 |
인트로, 수명주기 렌더링 단계, Stability |
|||||||||
과제 | 미정 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
👨💻 | 👩💻 | 👨💻 | 👩💻 | |||||||
심화과제
자율 수행 |
성능 최적화 실습 | |||||||||
과제 | 미정 | |||||||||
성취도 | 동민 | 강희 | 관희 | 유리 | ||||||
👨💻 | 👩💻 | 👨💻 | 👩💻 | |||||||
매주차 레포지토리에 자기 이름으로 정리하기
2기 과제
동민 : MVI란 무엇일까?
강희 : 나도한다. MVI
관희 : MVI
유리 : MVI에 대해서
Orbit MVI공부해오기(github)
MVI Project 클론 코딩 하기
koin -> Hilt 마이그레이션은 자유!
예시는 멀티모듈을 사용했지만, 싱글모듈로 구현해도 됩니다
조관희의 꿀팁공유
- intent Deep Dive with Orbit DSL
- reduce Deep Dive with Orbit DSL
- postSideEffect Deep Dive with Orbit DSL
이것만 하면 아쉽겠죠!
기존 코드들 야무지게 정리하고 MVI스럽게!!!
레퍼런스 많이많이 찾아보고 오깅~
링크에 있는 api를 활용하기.
서버통신의 경우 방법은 자유입니다. ex) enqueue, hilt, repository pattern 등...
단, mvi스럽게 짜는 것이 과제입니다!
1기 과제
조건
위 프로필 카드 클론코딩하기
이미지는 coil 라이브러리 활용하여 이미지 로딩하기!
default.mp4
구현 조건
- Card 레이아웃을 활용해서 화면 구성하기
- item 객체를 만들고, 객체 배열을 만들기
- LazyColumn과 item 배열을 활용하여 영상과 비슷한 카탈로그 만들기~
- 이미지는 coil 라이브러리를 활용해서!!!
화면에 들어가는 내용은 자유! 단, 최소 이미지와 텍스트는 들어가야함!
week3HomeWork.mp4
구현 조건
- Canvas를 활용하여 custom ProgrgrassBar 구현
- Dialog 사용
- DropDownMenu 구현
- 해당 기술을 사용했다면 나머진 자유!!
4.compose.mp4
구현 조건
- 3주차 과제를 활용하여 Dailog가 아닌 메인화면에 그대로 나타나게 할 것
- 별점을 선택할 시 별이 좌측에서 우측으로 하나씩 나타나야하고, CustomProgressBar도 실시간으로 조금씩 변경되어야함.
- 별점을 5점에서 1점으로 변경하였을 때 우측에서 좌측으로 하나씩 줄어들어야한다. 당연히 점수도 정상적으로 반영돼야겠죠?
Compose에는 remember가 있는데 왜 Flow랑 LiveData를 쓸까?
확실한 근거와 함께 조사해오기!!
- State를 저장하는 방법 - 공식문서
- State를 저장하는 방법 SaveStateHandle
- collectAsStateWithLifecycle에 관하여
- hiltViewModel() vs viewModel()
- CompositionLocal을 이해하고 써보자