โ
CLI ์๋ฐ ์๋น์ค ๋ง๋ค๊ธฐ (์ฝ์ ๊ธฐ๋ฐ)
์ด ๊ณผ์ ๋ Java ์ฝ์ ํ๋ก๊ทธ๋จ ์ผ๋ก ๊ฐ๋จํ ํ
์คํธ ๊ฒ์ํ์ ๊ตฌํํ๋ ํ๋ก์ ํธ์
๋๋ค.
Java ๊ธฐ๋ณธ ๋ฌธ๋ฒ, ํด๋์ค ๋ฐ ๊ฐ์ฒด์งํฅ ์ค๊ณ, ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ์ ์ฅ ๊ตฌ์กฐ(ArrayList ๋ฑ)๋ฅผ ์ฐ์ตํฉ๋๋ค.
๐งฉ ์ ์ฒด ๊ธฐ๋ฅ ์์
๊ธฐ๋ฅ
์ค๋ช
๊ฒ์๊ธ ์์ฑ
write ๋ช
๋ น์ด ์
๋ ฅ ์ ์ ๋ชฉ/๋ด์ฉ์ ๋ฐ์ ์ ๊ฒ์๊ธ ์์ฑ
๊ฒ์๊ธ ๋ชฉ๋ก
list ๋ช
๋ น์ด ์
๋ ฅ ์ ๋ชจ๋ ๊ฒ์๊ธ์ ๋ฒํธ์์ผ๋ก ์ถ๋ ฅ
๊ฒ์๊ธ ์์ธ๋ณด๊ธฐ
detail [id] ๋ช
๋ น์ด๋ก ํน์ ๊ฒ์๊ธ ๋ด์ฉ์ ์ ์ฒด ํ์ธ
๊ฒ์๊ธ ์์
update [id] ๋ช
๋ น์ด๋ก ์ ๋ชฉ/๋ด์ฉ์ ์์
๊ฒ์๊ธ ์ญ์
delete [id] ๋ช
๋ น์ด๋ก ํด๋น ๊ธ ์ญ์
์ข
๋ฃ
exit ๋ช
๋ น์ด๋ก ํ๋ก๊ทธ๋จ ์ข
๋ฃ
โ
๊ฒ์๊ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์
class Article {
int id ;
String title ;
String content ;
String regDate ;
}
โ๏ธ ์ฃผ์ ํด๋์ค ๋ฐ ํ์ผ ๊ตฌ์กฐ ์์
src/
โโ Main.java โ ์ง์
์
โโ App.java โ ํ๋ก๊ทธ๋จ ์คํ ๋ก์ง
โโ Article.java โ ๊ฒ์๊ธ ๋ฐ์ดํฐ ํด๋์ค
โโ Rq.java โ ์ปค๋งจ๋ ๋ช
๋ น์ด ์์ฒญ ์ ํธ ํด๋์ค
๐ง ๋ฉ์๋ ์ค๊ณ ์์
๋ฉ์๋๋ช
์ค๋ช
run()
์ฑ ์คํ ๋ฃจํ (์
๋ ฅ ๋๊ธฐ ๋ฐ ๋ช
๋ น์ด ์ฒ๋ฆฌ)
writeArticle()
๊ฒ์๊ธ ์์ฑ ์ฒ๋ฆฌ
listArticles()
๊ฒ์๊ธ ๋ชฉ๋ก ์ถ๋ ฅ
showDetail(int id)
ํน์ ๊ธ ์์ธ ๋ด์ฉ ์ถ๋ ฅ
updateArticle(int id)
๊ฒ์๊ธ ์์ ์ฒ๋ฆฌ
deleteArticle(int id)
๊ฒ์๊ธ ์ญ์ ์ฒ๋ฆฌ
getCurrentDate()
ํ์ฌ ๋ ์ง ๋ฆฌํด (yyyy-MM-dd ํ์)
๋ช
๋ น์ด: write
์ ๋ชฉ: ์๋ฐ ๊ณต๋ถ
๋ด์ฉ: ์๋ฐ ํ
์คํธ ๊ฒ์ํ ๋ง๋ค๊ธฐ
=> ๊ฒ์๊ธ์ด ๋ฑ๋ก๋์์ต๋๋ค.
๋ช
๋ น์ด: list
๋ฒํธ | ์ ๋ชฉ | ๋ฑ๋ก์ผ
-----------------------------
1 | ์๋ฐ ๊ณต๋ถ | 2025-08-03
๋ช
๋ น์ด: detail 1
๋ฒํธ: 1
์ ๋ชฉ: ์๋ฐ ๊ณต๋ถ
๋ด์ฉ: ์๋ฐ ํ
์คํธ ๊ฒ์ํ ๋ง๋ค๊ธฐ
๋ฑ๋ก์ผ: 2025-08-03
๋ช
๋ น์ด: update 1
์ ๋ชฉ (ํ์ฌ: ์๋ฐ ๊ณต๋ถ): Java ๊ฒ์ํ
๋ด์ฉ (ํ์ฌ: ์๋ฐ ํ
์คํธ ๊ฒ์ํ ๋ง๋ค๊ธฐ): ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ
=> ๊ฒ์๊ธ์ด ์์ ๋์์ต๋๋ค.
๋ช
๋ น์ด: delete 1
=> ๊ฒ์๊ธ์ด ์ญ์ ๋์์ต๋๋ค.
๋ช
๋ น์ด: exit
ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.
๐ฏ ๊ฐ๋ฐ ํฌ์ธํธ ์์ฝ
๊ธฐ์ ์์
์ ์ฉ
์
๋ ฅ ์ฒ๋ฆฌ
Scanner ํ์ฉํ์ฌ ๋ช
๋ น์ด/๋ฐ์ดํฐ ์
๋ ฅ ๋ฐ๊ธฐ
๋ฆฌ์คํธ ๊ด๋ฆฌ
ArrayList<Article>๋ก ๊ฒ์๊ธ ๋ชฉ๋ก ๊ด๋ฆฌ
๋ ์ง ์ฒ๋ฆฌ
LocalDate.now() ๋๋ SimpleDateFormat ํ์ฉ
์ ๋ ฌ
์ต์ ๊ธ์ด ์๋ก ์ค๋๋ก list() ์ญ์ ์ถ๋ ฅ
๊ฐ์ฒด์งํฅ ์ค๊ณ
๊ฒ์๊ธ ํด๋์ค ๋ถ๋ฆฌ, ๋ฉ์๋ ์ญํ ๋ถ๋ฆฌ
โ
์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ ์์
GitHub ์ ์ฅ์์ ํ๋ก์ ํธ ์
๋ก๋(๊ฐ์ธ ๋ ํฌ ๊ฐ๋ฅ)
README.md์ ๊ธฐ๋ฅ ์ค๋ช
, ์คํ ์์, ๋ช
๋ น์ด ์์ฝ ํฌํจ
ํด๋ ๊ตฌ์กฐ ์ ๋ฆฌ ๋ฐ ์ฃผ์ ๋๋ ๋ฌธ์ํ ๊ถ์ฅ
main - ์ ํ ์ถ์ ๋ธ๋์น
develop - ์ถ์๋ฅผ ์ํด ๊ฐ๋ฐํ๋ ๋ธ๋์น
feature/๋ณธ์ธ์ด๋ฆ - ๊ฐ์ ๊ฐ๋ฐํ๋ ๊ธฐ๋ฅ ๋จ์๋ก ๋
๋ฆฝ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํด ์์ฑ
refactor/xx - ๊ฐ๋ฐ๋ ๊ธฐ๋ฅ์ ๋ฆฌํฉํ ๋ง ํ๊ธฐ ์ํด ์์ฑ
hotfix/xx - ์ถ์ ๋ฒ์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น
chore/xx - ๋น๋ ์์
, ํจํค์ง ๋งค๋์ ์ค์ ๋ฑ
design/xx - ๋์์ธ ๋ณ๊ฒฝ
bugfix/xx - ๋ฒ๊ทธ ์์
๐ท๏ธ ์ปค๋ฐ ํ๊ทธ ๊ฐ์ด๋
ํ๊ทธ
์ค๋ช
[Feat]
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
[Fix]
๋ฒ๊ทธ ์์
[Refactor]
์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์ด ๊ตฌ์กฐ ๊ฐ์ )
[Style]
์ฝ๋ ํฌ๋งทํ
, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ๋ค์ฌ์ฐ๊ธฐ ์์ ๋ฑ
[Docs]
README, ๋ฌธ์ ์์
[Test]
ํ
์คํธ ์ฝ๋ ์ถ๊ฐ ๋ฐ ์์
[Chore]
ํจํค์ง ๋งค๋์ ์ค์ , ๋น๋ ์ค์ ๋ฑ ๊ธฐํ ์์
[Design]
UI, CSS, ๋ ์ด์์ ๋ฑ ๋์์ธ ๊ด๋ จ ์์
[Hotfix]
์ด์ ์ค ๊ธด๊ธ ์์ ์ด ํ์ํ ๋ฒ๊ทธ ๋์
[CI/CD]
๋ฐฐํฌ ๊ด๋ จ ์ค์ , ์ํฌํ๋ก์ฐ ๊ตฌ์ฑ ๋ฑ
โ
์ปค๋ฐ ์์ ๋ชจ์ (ํด๋น ํ๋ก์ ํธ์์๋ ์ด๋ชจ์ง ์ฌ์ฉ X)
๐ [Chore] ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ
โจ [Feat] ํ๋กํ ํ๋ฉด UI ๊ตฌํ
๐ [Fix] iOS 17์์ ๋ฒํผ ํด๋ฆญ ์ค๋ฅ ์์
๐ [Design] ๋ก๊ทธ์ธ ํ๋ฉด ๋ ์ด์์ ์กฐ์
๐ [Docs] README์ ํ๋ก์ ํธ ์๊ฐ ์ถ๊ฐ
PR ์, ํ
ํ๋ฆฟ์ด ๋ฑ์ฅํ๋ค. ํด๋น ํ
ํ๋ฆฟ์์ ์์ฑํด์ผํ ๋ถ๋ถ์ ์๋์ ๊ฐ๋ค
PR ์ ํ ์์ฑ, ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์์๋์ง [] ๊ดํธ ์ฌ์ด์ x๋ฅผ ์
๋ ฅํ์ฌ ์ฒดํฌํ ์ ์๋๋ก ํ๋ค.
์์
๋ด์ฉ ์์ฑ, ์์
๋ด์ฉ์ ๋ํด ์์ธํ๊ฒ ์์ฑ์ ํ๋ค.
์ถํ ์งํํ ์์
, PR ์ดํ ์์
ํ ๋ด์ฉ์ ๋ํด ์์ฑํ๋ค
๋ฆฌ๋ทฐ ํฌ์ธํธ, ๋ณธ์ธ PR์์ ๊ผญ ํ์ธํด์ผ ํ ๋ถ๋ถ์ ์์ฑํ๋ค.
PR ํ๊ทธ ์ข
๋ฅ, PR ์ ๋ชฉ์ ํ๊ทธ๋ ์๋ ํ์์ ๋ฐ๋ฅธ๋ค.
๐ ํ๊ทธ ์ข
๋ฅ (์ปค๋ฐ ์ปจ๋ฒค์
๊ณผ ๋์ผ)
ํ๊ทธ
์ค๋ช
[Feat]
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
[Fix]
๋ฒ๊ทธ ์์
[Refactor]
์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์ด ๊ตฌ์กฐ ๊ฐ์ )
[Style]
์ฝ๋ ํฌ๋งทํ
, ๋ค์ฌ์ฐ๊ธฐ ์์ ๋ฑ
[Docs]
๋ฌธ์ ๊ด๋ จ ์์
[Test]
ํ
์คํธ ์ฝ๋ ์ถ๊ฐ ๋๋ ์์
[Chore]
๋น๋/์ค์ ๊ด๋ จ ์์
[Design]
UI ๋์์ธ ์์
[Hotfix]
์ด์ ์ค ๊ธด๊ธ ์์
[CI/CD]
๋ฐฐํฌ ๋ฐ ์ํฌํ๋ก์ฐ ๊ด๋ จ ์์
โ
PR ์์ ๋ชจ์ (ํด๋น ํ๋ก์ ํธ์์๋ ์ด๋ชจ์ง ์ฌ์ฉ X)
๐ [Chore] ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ
โจ [Feat] ํ๋กํ ํ๋ฉด UI ๊ตฌํ
๐ [Fix] iOS 17์์ ๋ฒํผ ํด๋ฆญ ์ค๋ฅ ์์
๐ [Design] ๋ก๊ทธ์ธ ํ๋ฉด ๋ ์ด์์ ์กฐ์
๐ [Docs] README์ ํ๋ก์ ํธ ์๊ฐ ์ถ๊ฐ