~ Today I Learned ~
โ๏ธ Android ๊ฐ๋ฐ ์ข
ํฉ๋ฐ 3์ฃผ์ฐจ - MBTI ํ
์คํธ ์ ์ ์ผ๋ถ
โ๏ธ ๋ฐ์ผ๋ฆฌ Algorithm ๋ฌธ์ ํ์ด (9๋ฒ ~ 15๋ฒ)
โ๏ธ TIL ํน๊ฐ ์๊ฐ
โ๏ธ ํฐ์คํ ๋ฆฌ ์คํจ html, css ์์
โ๏ธ Github ๋ ํฌ์งํ ๋ฆฌ ์์ฑ ๋ฐ ์ฐ๊ฒฐ, README.md ์์
โ๊ณํ์คํจโ Gitbook ์๋๋ก์ด๋ ์
๋ฌธ ํ์ต์๋ฃ ์ฑํฐ 3 ํ์ต
1. Android ๊ฐ๋ฐ ์ข ํฉ๋ฐ 3์ฃผ์ฐจ - MBTI ํ ์คํธ ์ ์ ์ผ๋ถ
๐จ๊ฐ๋ฐ ๋จ๊ณ
(1) ๊ทธ๋ผ๋ฐ์ด์
์ ์ํด drawable ํด๋์ layout_bg.xml ํ๋ ์ ์
(2) activity_main.xml ํ์ผ ์์
(3) Main Activtity ์์
- ํ
์คํธ ์์ ๋ฒํผ ๋๋ฅด๋ฉด Test Activity๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ ๊ตฌํ
- ์๋ก์ด ์กํฐ๋นํฐ๋ intent๋ก ํธ์ถ
btn_start.setOnClickListener {
val intent = Intent(this@MainActivity, TestActivity::class.java)
startActivity(intent)
}
(4) Test Activity ์์
- ํจ์จ์ ์ํด ๊ฐ๊ฐ์ ์ง๋ฌธ์ง๋ง๋ค ์กํฐ๋นํฐ๋ฅผ ๋ง๋ค์ง ์๊ณ ํ๋์ ์กํฐ๋นํฐ๋ก ๋ชจ๋ ํ
์คํธ ๊ตฌํ
- ํ
์คํธ์ ๋ต์ ์ฒดํฌํ๊ณ , ๋ค์ ํ๋ฉด์ผ๋ก ๊ณ์ ๋์ด๊ฐ๋ ์กํฐ๋นํฐ ์ค๊ณ
- ํ์ด์ง๋ฅผ ๋๊ธฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ViewPager ์ฌ์ฉ
1. ์ฌ์ฉํ๊ธฐ ์ํด build.gradle์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ ํ์
implementation("androidx.viewpager2:viewpager2:1.0.0"
2. Adapter ์ถ๊ฐ (์ค๋ฅธ์ชฝ ํด๋ฆญ - ๋ด ์ฝํ๋ฆฐ - ViewPagerAdaptor.kt ์์ฑ)
FragmentStateAdapter ์์ ๋ฑ
์์ง์ ์ต์์น ์์ ๋ค์์ฃผ ์์์ผ์ ์ด์ด์ ํ๋๋ก ํด์ผ๊ฒ ๋ค.
2. ๋ฐ์ผ๋ฆฌ Algorithm ๋ฌธ์ ํ์ด (9๋ฒ ~ 15๋ฒ)
๐จ์ค๋ ํ์ดํ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์
- ์ง์์ ํฉ
- ๋ฐฐ์ด์ ํ๊ท ๊ฐ
- ์ง์์ ํ์
- ํ๊ท ๊ตฌํ๊ธฐ
- ์๋ฆฟ์ ๋ํ๊ธฐ
- ์ฝ์์ ํฉ
- ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ
3. TIL ํน๊ฐ ์๊ฐ
๊ธฐ์ฑ์ฉ
- ๊ธฐ๋ก: ๋ด๊ฐ ๋ฌด์์ ๋ฐฐ์ ๋์ง ๊ธฐ๋ก
- ์ฑ์ฅ: ํ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ฉฐ ์ดํด๋๋ฅผ ๋์ด๊ณ , ๋ณต์ต
- ํ์ฉ: ๋น์ทํ ๋ฌธ์ ๋ฐ์ ์ ํ์ฉํ ์ ์์
์ทจ์
- ํ์ฌ: ๋ด๊ฐ ๋จ๋ค๋ณด๋ค ๋ ์ด์ฌํ ํ๊ณ ์ํ๋ค๋ ๊ฒ์ ์ฆ๋ช
- ๋ฏธ๋: ๋ด๊ฐ ๋จ๋ค๋ณด๋ค ํ์ฌ์ ๋์์ด ๋ ์ฌ๋์ด๋ผ๋ ๊ฒ์ ์ฆ๋ช
- ์ทจ์ == ์ฆ๋ช
ํ์ค
- ์๋ง์ ์ ์ ๊ฐ๋ฐ์๋ค
- ๋งค๋ ์๋ง์ ๊ตญ๋น์ง์๊ณผ ๋ถํธ์บ ํ์ ์ ๊ณต์๋ก ์์์ง
- ์ง๊ธ ๊ฐ๋ฐ์ ๊ณผํฌํ ์๋
๋ฉด์ ๊ด์ ์ ์ฅ
- ๊ฑฑ์ : ๋๋ฌด ๋ชฐ๋ผ์ ๋ด๊ฐ ๋ค ๊ฐ๋ฅด์ณ์ผ ํ๋ ๊ฑฐ ์๋์ผ? -> ์๋ฅ ํ๋ฝ
- ์์ฌ : ๋ณธ์ธ์ด ์ ๋ง๋ก ์ด ์ฝ๋๋ฅผ ์ง ๊ฒ ๋ง์๊น? -> ์๋ฅ ํ๋ฝ
- ๊ธฐ๋ : ๊ด์ฐฎ์์ง๋? ๋ฉด์ ์ด๋ผ๋ ๋ณผ๊น? -> ๋ฉด์ ์ ๊ธฐํ
- ์ ์ ์ด ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๊ฒฝํ๊ณผ ์ค๋ ฅ, ์ฑ์ค์ฑ์ ์ฆ๋ช ํ๋ ๋ฒ = TIL ๋ธ๋ก๊ทธ ์์ฑ
- ์ด์ฐจํผ ์ฌ๋๋ค ๋ค ์ฐ๋ฉด ์ด๊ฒ ์ฐจ๋ณํ๊ฐ ๋๋?
โ ์ ๋๋ก ์ ์ฐ๊ณ ๋์ถฉ ์ฐ๊ฑฐ๋ ์ฐ๋ค ๋ง๋ ์ฌ๋๋ค์ด ๊ต์ฅํ ๋ง์ - ์ด์ฌํ ํ๋๋ฐ ๋๋ง ๋ฟ๋ฏํ๋ฉด ๋ญํจ, ์ฌ๋๋ค์๊ฒ ์ฆ๋ช ํด์ผ์ง
TIL :: ์ค๋ ๋ฐฐ์ฐ๊ณ ๋๋ ๊ฒ
1. ๊ฐ์ ๋ด์ฉ ์ ๋ฆฌํ๊ธฐ (์ด๊ธฐ)
- (1) ์ค๋ ๋ฐฐ์ด ๊ฒ
- (2) ๊ฐ๋ ์ ๋ฆฌ
- (3) ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- (4) ์ฌ์ฉ๋ฒ
2. ๊ฐ๋ฐ ๋จ๊ณ ์ ๋ฆฌ
3. ํ๋ฃจ ํ๊ณ
- (1) ์ค๋ ์์๋ ์ผ (ํ์๊ณผ์ ์ํ ์ค๋ฅ ๋ฑ)
- (2) ์ค๋ ๋ฐ์ํ๋ ์ผ์ ๋ํ ๋๋์
- (3) ์์ผ๋ก์ ๊ฐ์ ๋ฐฉ์
4. ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
- (1) ๋ฐ์ํ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์์ฑ
- (2) ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ฝ๋ ์์ฑ
- (3) ๋ฌธ์ ์ ์์ธ์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์ฑ
- (4) ํด๊ฒฐ ๊ณผ์ ์ค ๋๋ ์ , ๊ฐ์ ๋ฐฉ์์ด ์์ผ๋ฉด ์์ฑ
4. ํฐ์คํ ๋ฆฌ ์คํจ html, css ์์
- ##_article_rep_rp_link_## ์นํ์ ์ญ์
- ๋๊ธ ์์ญ ์์ , padding ์กฐ์ , transition ์์
- ๋ฐ์ํ max width ์ค์ ๋ณ๊ฒฝ
5. Github ๋ ํฌ์งํ ๋ฆฌ ์์ฑ ๋ฐ ์ฐ๊ฒฐ, README.md ์์
- ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ง๊ธ๊น์ง ํ ํ๋ก์ ํธ ํ์ผ์ ๋ชจ๋ push ํ๋ค.
- ์ฒ์์ README.md ํ์ผ์ ๋จผ์ ์์ฑํ ํ์ push ์ค๋ฅ๊ฐ ์์์ผ๋, pull ํ ๊ฐ์ push๋ก ํด๊ฒฐํ์๋ค.
- ๋ ํฌ์งํ ๋ฆฌ ๋ช ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ด ๋ณ๊ฒฝํ๊ณ , git remote๋ก ๋ค์ ์ฐ๊ฒฐํด์ฃผ๋ ์์ ์ ํ์๋ค.
- ๋ด ํ๋ธ์ README ํ์ผ์ ๊พธ๋ช๋ค.
~ Trouble Shooting ~
1. xml์ ์์ฑํ๊ณ ํ์ธํ๋ ๊ณผ์ ์์ "Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing .. " ์ค๋ฅ ๋ฐ์
- ํด๋น ์ค๋ฅ๋ ๋ณดํต Build ๋ฉ๋ด - Clean Project ํด๋ฆญ์ผ๋ก ์บ์ฑ๋ ํ์ผ ์ ๋ฆฌ - Rebuild Project ํด๋ฆญ์ผ๋ก ์ฌ๋น๋๋ก ํด๊ฒฐํจ
- ๋์ ๊ฒฝ์ฐ์๋ Rebuild๋ฅผ ํ๊ณ ๋๋ "Element type "ImageView" must be followed by either attribute specifications, ">" or "/>"." ์ผ๋ก ๋ช ํํ ์ค๋ฅ๊ฐ ์ถ๋ ฅ๋์์
- ์ด๋ฏธ์ง๋ทฐ๋ฅผ ์ ์ธํ๊ณ ๋ง๋ฌด๋ฆฌ />๋ฅผ ๊น๋จน์ ๊ฒ์ธ๋ฐ, ํด๊ฒฐ ํ ์ ์ ์๋๋จ์ ํ์ธํจ
- ๐ก๋๋ ์
- ์ด๋ ๊ฒ ์งง์ ์ฃผ๊ธฐ๋ก ๋น๋ํ๋๊น ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ์ ์ด ๋ช ํํ ๋๋์ด์๋ค.
- ์์ผ๋ก๋ ๊ฐ๋ฐ ์ค์ ๋น๋๋ฅผ ์์ฃผ ํ์.
2. ๊นํ๋ธ ์ค์ ์ค๋ฅ
- ๊นํ๋ธ์ readme.md ํ์ผ์ ๋ฏธ๋ฆฌ ๋ง๋ค์๋๋ ์๊ธด ๋ฌธ์ ๊ฐ๋ค.
- QuickSetup๋ ์ ๋์์ ์ง์ ์ค๋ฆฌ์ง ์ฃผ์๋ฅผ ์ค์ ํ๋๋ฐ ์ ๋ฆฌ ๋ฌธ์ ๊ฐ ์๊น
error: failed to push some refs to 'https://github.com/xeejin/SpartaBootcamp.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
- ์ด ์๋ฌ๋ github์ ๋ด Local์ ์๋ ํ์ผ์ด ์๋ ์ํ์์, ๋ด ํ์ผ์ pushํ๋ฉด ์๊ธฐ๋ ์ค๋ฅ๋ผ๊ณ ํจ
- ๊ทธ๋์ update๋ฅผ ํด์ฃผ์ง ์์ผ๋ฉด push๋ฅผ ํ ์๊ฐ ์๋ ์ํ
- update ํ๋ ๋ฒ : ์๊ฒฉ์ ์ฅ์์์ ๋ด ๋ก์ปฌ์ ์๋ ํ์ผ์ ์ํด git pull์ ๋จผ์ ํ๊ณ , ๋ค์ push ํ๋ฉด ๋จ
(1) git pull { origin ์๊ฒฉ์ ์ฅ์ ์ด๋ฆ } { branch ( main, master ... ) ๋ธ๋ฐ์น}
(2) git push { origin ์๊ฒฉ์ ์ฅ์ ์ด๋ฆ } { branch ( main, master ... ) ๋ธ๋ฐ์น}
(3) ์ ๋๋ฉด -f ์ต์ ์ผ๋ก ๊ฐ์ push: git push -f origin - ๊ทผ๋ฐ ์ด๋ ๊ฒ ํ๋๋ ๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์
! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/xeejin/SpartaBootcamp.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
- ์ด ์ค๋ฅ๋ ๋ฐ์ดํฐ ์ ์ค ๋ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ ๋ถ๋ถ์ด ์์ด git์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์๋ฌ
- ๊ทผ๋ณธ์ ์ธ ์์ธ์ ์ฐพ์ ํด๊ฒฐํ ์๋ ์์ง๋ง, ์์๋ฐฉํธ์ผ๋ก +๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐ ๊ฐ๋ฅ
- git push -u origin +master๋ก ํด๊ฒฐ
~ Retrospect ~
์ด๋ฒ ์ฃผ์ ๊ณต๋ถ๊ฐ ๋ง๋ฌด๋ฆฌ ๋๋ ๋ ์ด๋ค. ๋ค์ฌ๋ค๋ํ๋ ์ผ์ฃผ์ผ์ธ๋ฐ, ์ฌ์ค ์ค๋์ ์์งํ ์ง์ค๋ ฅ์ด ๋ง์ด ๋จ์ด์ก๋ค. ์์ง์ ์์นจ 9์๋ถํฐ ๋ฐค 9์๊น์ง ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ ์ต๊ดํ๊ฐ ๋์ด์์ง ์์ ๊ฒ ๊ฐ๋ค.
์ด์ ๊น์ง๋ ์ดํดํ๋ฉด์ ์ ๋ฐ๋ผ์๋๋ฐ, ์ค๋ ๋ฐฐ์ด ๋ถ๋ถ์์ ์๋ก์ด ํจ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฌ์ฉํ๋ฉด์ ๋ํญ์ ๊ฒช์๋ค... ํ ๋ฒ์ ๋ง์ Activity์ Xml์ ์ค๊ณํ๋ ๋ถ๋ถ์์ ์๋ฌด๋๋ ๊ณ ๊ตฐ๋ถํฌ๋ฅผ ์ข ํ ๊ฒ ๊ฐ๋ค.
์ดํด๋ฅผ ํด์ผ ์ง์ฑ์ด ํ๋ฆฌ๋ ์ฑ๊ฒฉ์ด๋ผ, ์ต๋ํ ์ด๋ฒ ์ฃผ ๋ด๋ก ๋ค ์ํ๋ฅผ ๋๋ง์น๊ณ ์ถ๋ค. ์ฃผ๋ง๊น์ง ์๊ณ ๋ฆฌ์ฆ 20๋ฒ๋ ์ด์๊น์ง ํ๊ณ , 3์ฃผ์ฐจ ๊ฐ์ ๋ณต์ต ๋ฐ ๊น๋ถ Kotlin ๋ฌธ๋ฒ ํ์ต๋ ๋ค ํด์ผ๊ฒ ๋ค. ํ์ดํ
!