๊ฐ๋ฐ์ 99% ์ปค๋ฎค๋ํฐ์์ ์๋ค ๋จ์ด์!
์ค๋ TIL 3์ค ์์ฝ
๋๊ตฌ์ ์ ์ฐฝํด์ ธ๋ผ(์ผ๋ฐ ํ ์คํธ, ์ ธ, ์๋ํฐ, VCS ๋ฑ)
GUI ํ๊ฒฝ์์ ๋ฒ์ด๋ CLI ํ๊ฒฝ, ์ ธ์ ์ต์ํด์ ธ๋ผ.
๋๋ฒ๊น ์ ๋ฌธ์ ํ์ด๋ผ๊ณ ๋ฐ์๋ค์ด๊ณ ํด๊ฒฐํ ๋ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์๋ผ.
TIL (Today I Learned) ๋ ์ง
2022.03.23
์ค๋ ์ฝ์ ๋ฒ์
3์ฅ. ๊ธฐ๋ณธ ๋๊ตฌ
์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
์ผ๋ฐ ํ ์คํธ
์ผ๋ฐ ํ ์คํธ๋ผ๋ฉด ๋ฐ์ดํฐ ๊ทธ ์์ฒด๋ง์ผ๋ก ์๋ฏธ๊ฐ ๋๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ์ ์์. ์ฆ, ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋ฆฝ์ ์ธ ๊ฒ.
์ผ๋ฐ ํ ์คํธ๊ฐ ํ์์ด ์๋ ํ ์คํธ๋ฅผ ์๋ฏธํ๋ ๊ฒ X. HTML, JSON, YAML ๋ฑ์ ๋ชจ๋ ์ผ๋ฐ ํ ์คํธ. HTTP, SMTP, IMAP ๋ฑ ์ธํฐ๋ท์์ ์ฌ์ฉ๋๋ ํต์ฌ ํ๋กํ ์ฝ๋ ๋๋ถ๋ถ ์ผ๋ฐ ํ ์คํธ.
์ ๋์ค์์๋ ์ฌ์ฉ์, ๋น๋ฐ๋ฒํธ, ๋คํธ์ํฌ ์ค์ ๋ฑ ์์คํ ๊ด๋ฆฌ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ๋ก ์ ์ฅ.
ํ๊ท ํ ์คํธ(regression test) - ๋์ผํ ํ ์คํธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ํํจ์ผ๋ก์จ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐ๋์์ ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์ ๋๋ก ์๋ํ๋์ง ๊ฒ์ฌํ๋ ํ ์คํธ. ํ๊ท ํ ์คํธ์์ ์ฐพ์๋ธ ๋ฌธ์ ๋ฅผ ๋ฆฌ๊ทธ๋ ์ (regression)์ด๋ผ ๋ถ๋ฅด๊ธฐ๋ ํจ.
๋ชจ๋ ์์ ์ GUI๋ก๋ง ํ๋ฉด ์ฌ๋ฌ๋ถ์ด ๊ฐ์ง ํ๊ฒฝ์ ๋ฅ๋ ฅ์ ์ ๋ถ ์ด์ฉํ ์ ์๋ค. GUI์ ์ฅ์ ์ WYSIWYG(What You See Is What You Get), ์ฆ ์ฌ๋ฌ๋ถ์ด ๋ณด๋ ๊ฒ์ด ์ฌ๋ฌ๋ถ์ด ์ป๋ ๊ฒ์ด๋ผ๋ ์ ์ด์ง๋ง, ๋จ์ ์ WYSIAYG(What You See Is All You Get), ์ฆ ์ฌ๋ฌ๋ถ์ด ๋ณด๋ ๊ฒ์ด ์ฌ๋ฌ๋ถ์ด ์ป๋ ์ ๋ถ๋ผ๋ ๊ฒ์ด๋ค. GUI ํ๊ฒฝ์ ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก ์ค๊ณ์๊ฐ ์๋ํ ๋ฒ์๋ฅผ ๋์ด์ค ์ ์๋ค.
์ฌ๋ฌ๋ถ์ ์ ธ ์์์ ๋ง์ ์๊ฐ์ ๋ณด๋ด๊ฒ ๋ ๊ฒ์ด๋ค. ์๋ผ๊ฒ์ฒ๋ผ ์กฐ๊ฐ ๊ป๋ฐ๊ธฐ(shell), ๊ทธ๋ฌ๋๊น ์ ธ์ ์ฌ๋ฌ๋ถ์ ์ง์ผ๋ก ๋ง๋ค์ด๋ผ.
๋๋ฒ๊น ์ ํ์ด์ผ ํ ํผ์ฆ๋ก ๊ณต๋ตํ๋ ๋์ ํ์ค ๋ถ์ ์ด๋ ์๊ฐ๋ฝ์ง, ์ด์คํ ๋ณ๋ช , ๋ฌด๊ด์ฌ์ผ๋ก ๋ํ๋ ์ฌ๋๊ณผ ๋ง์ฃผ์น๊ธฐ๋ ํ๋ค. ๋๋ฒ๊น ์ ๋จ์ง ๋ฌธ์ ํ์ด์ผ ๋ฟ์ด๋ผ๋ ์ฌ์ค์ ๋ฐ์๋ค์ด๊ณ , ๊ทธ๋ฐ ๋ง์์ผ๋ก ๊ณต๋ตํ๋ผ.
๊ฒ์ผ๋ก ๋๋ฌ๋ ํน์ ํ ์ฆ์๋ง ๊ณ ์น๋ ค๊ณ ํ์ง ๋ง๊ณ , ํญ์ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ผ.
"์ฝ๋๋ฅผ ๊ณ ์น๊ธฐ ์ ์คํจํ๋ ํ ์คํธ๋ถํฐ."
์ด์ง ๋ถํ - ํ๋ก๊ทธ๋จ์ด ์ฃฝ๋๋ค๋ฉด ์ด์ง ๋ถํ ์ ํ์ฉํด์ ์ ํํ ์ด๋ค ์ ๋ ฅ๊ฐ์ด ๋ฒ์ธ์ธ์ง ์ฐพ์๋ด๋ผ. (131p)
๋ฒ๊ทธ์ ๊ด๋ จ๋ ๋ฃจํด์ด๋ ์ฝ๋๊ฐ ์ ๋๋ก ์๋ํ๋ ๊ฑธ '์๋ค'๊ณ ํด์ ๋์ถฉ ์ผ๋ฒ๋ฌด๋ฆฌ๊ณ ์ง๋์น์ง ๋ง๋ผ. ๊ทธ๊ฒ์ ์ฆ๋ช ํ๋ผ. ์ด ๋งฅ๋ฝ ์์์, ์ด ๋ฐ์ดํฐ๋ก, ์ด ๊ฒฝ๊ณ ์กฐ๊ฑดํ์์ ์ฆ๋ช ํ๋ผ.
๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊น์, ํน์ ์ด๊ฒ๊ณผ ๋์ผํ ๋ฒ๊ทธ๊ฐ ์์ ๋ฒํ ๋ค๋ฅธ ์ฝ๋๊ฐ ์๋์ง ์ดํด๋ณด์. ๋ฐ๋ก ์ง๊ธ ๊ทธ๊ฒ๋ค์ ์ฐพ์์ ๊ณ ์ณ์ผ ํ๋ค. ์ด๋ค ์ผ์ด ์ผ์ด๋ฌ๋ ์ง ๊ฐ์ ๋๊ฐ์ ์ผ์ด ๋ค์ ๋ฐ์ํ๋ฉด ๊ทธ ์ฌ์ค์ ์ ์ ์๋๋ก ํ๋ผ.
์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์
GUI ํ๊ฒฝ์ ์ต์ํด์ ธ์๋ ์์ค์๋ ํญ์ ํ๊ณ๊ฐ ์๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํด์๋๋ฐ ์ด๋ ๊ฒ ์ฑ ์์๋ ๊ทธ ๋ถ๋ถ์ ์ ์ด๋๋ ํ์คํ ์ ธ์ ์ต์ํด์ ธ์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค. ๋ด๊ฐ ํ์ํ๊ฒ ๋ง๋ค์ด์ ธ์์ง ์๋ค๋ฉด ๋ง๋ค์ด๋ ๋ด์ผ๊ฒ ๋ค.
ํ ํ๋ก์ ํธ์์ ๋ฒ๊ทธ๊ฐ ๋ํ๋๋ฉด ์ฑ ์์ ๋ฌป๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์๋๋ฐ, ์์ผ๋ก๋ ๋ ์ค์ค๋ก์๊ฒ๋ ํ์์๊ฒ๋ ๊ท์ฑ ์ ๋ฌป๊ธฐ๋ณด๋ค๋ ๊ทธ์ '๋ฌธ์ ํ์ด'๋ผ๊ณ ์๊ฐํ๊ณ ํด๊ฒฐํด์ผ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฑ ๋๋ฌ๋ ๋ฒ๊ทธ๋ง์ ๊ณ ์น๊ธฐ๋ณด๋ค๋ ๋ถ์ํ๊ฑฐ๋ ์ด์ ๋น์ทํ ์ฝ๋๋ค์ ๋ค์ ์ดํด๋ณด๋ ์ต๊ด๋ ๊ธธ๋ฌ์ผ๊ฒ ๋ค.
๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
์นธ๋ฐ ๋ณด๋(kanban board) - https://en.wikipedia.org/wiki/Kanban_board
๋ถํ ์ ๋ณต(divide and conquer) - ์ด์ง ํ์, ํต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
ํธ๋ ์ด์ฑ ๊ตฌ๋ฌธ - '์ฌ๊ธฐ๊น์ง ๋๋ฌ'์ด๋ 'x๊ฐ = 2'๊ฐ์ด ํ๋ฉด ํน์ ํ์ผ์ ์ถ๋ ฅํ๋ ์์ ์ง๋จ์ฉdiagnostic ๋ฉ์์ง