์ํํธ์จ์ด ๊ฐ๋ฐ์ โโ๋ฐฉ๋ํ ์์ ์ฝ๋๋ฅผ ์์ฑ, ํ ์คํธ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ณต์กํ ํ๋ก์ธ์ค์ ๋๋ค. ์๋ จ๋ ๊ฐ๋ฐ์์กฐ์ฐจ๋ ๊ธฐ๋ฅ, ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ์์์ํค๋ ์ค๋ฅ๋ฅผ ๋์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ๊ฐ๋จํ ๊ตฌ๋ฌธ ์ค๋ฅ์์ ๊ณต๊ฒฉ์๊ฐ ์ ์ฉํ ์ ์๋ ์ฌ๊ฐํ ์ทจ์ฝ์ฑ๊น์ง ๋ค์ํฉ๋๋ค. ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ ์์ ํ๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋๋ฒ๊น , ์์คํ ์ค๋ฅ ๋๋ ๋ณด์ ์นจํด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ ์ฝ๋ ๊ฒํ ๋ ์ข ์ข โโ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ธ๊ฐ์ ๊ฐ๋ ์ ๋ฐ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ์๋ํ๋ ์๋ฃจ์ ์ด ํ์์ ์ ๋๋ค.
์ ์ ์ฝ๋ ๋ถ์(SCA)์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ๋ ์ค๋ฅ๋ฅผ ์๋ณํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค. SCA ๋๊ตฌ๋ ์์ค ์ฝ๋๋ฅผ ์ค์บํ์ฌ ๊ตฌ๋ฌธ ์ค๋ฅ, ๋ ผ๋ฆฌ์ ๊ฒฐํจ, ๋ณด์ ์ทจ์ฝ์ฑ, ๋ฉ๋ชจ๋ฆฌ ๋์, ๋์์ฑ ๋ฌธ์ ๋ฐ ์ฝ๋ ํ์ง ๊ฒฐํจ์ ํฌํจํ ๊ด๋ฒ์ํ ๋ฌธ์ ๋ฅผ ๊ฐ์งํฉ๋๋ค. ์ด๋ฌํ ์ฌ์ ์๋ฐฉ์ ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ์๋ ์ฝ๋ ์์ ์ฑ์ ๊ฐ์ ํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํํ๋ฉฐ ์ ๊ณ ํ์ค์ ์ค์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์์๋ SCA๊ฐ ๊ฐ์งํ ์ ์๋ ๋ค์ํ ์ ํ์ ์ค๋ฅ์ SMART TS XL ์ํํธ์จ์ด ํ์ง๊ณผ ๋ณด์์ ๊ฐํํฉ๋๋ค.
๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๋ ๊ฒ์ ์ค์์ฑ
๋ฒ๊ทธ๋ฅผ ์ผ์ฐ ๋ฐ๊ฒฌํ ์๋ก ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ ธ๋ ฅ์ด ์ค์ด๋ญ๋๋ค. ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ, ์ด์์ ์ผ๋ก๋ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๋ฉด ๋์ค์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ฃผ์ ๋ฌธ์ ๋ก ์ปค์ง ๊ฐ๋ฅ์ฑ์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค. ์ด๋ ๊ตฌ๋ฌธ ์ค๋ฅ, ๋ฉ๋ชจ๋ฆฌ ๋์, ๋์์ฑ ๋ฌธ์ ์ ๊ฐ์ ํน์ ๋ฒ๊ทธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ฑฐ๋ ๊ด๋ฒ์ํ ํ ์คํธ๋ฅผ ๊ฑฐ์น ํ์์ผ ๋ํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค.
Java์์ null ๊ฒ์ฌ๊ฐ ๋๋ฝ๋์ด ๋ฐํ์ ์์ธ๊ฐ ๋ฐ์ํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์๋ฐ๋ณต์ฌpublic class UserProfile {
public String getUserName(String userId) {
return userId.toUpperCase(); // NullPointerException if userId is null
}
}
UserProfile profile = new UserProfile();
System.out.println(profile.getUserName(null));
์ด ๊ฒฝ์ฐ null ๊ฒ์ฌ๊ฐ ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. NullPointerException ์คํ ์. ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ์ด ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์ฆ์ ํ์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ๋ ์ ์ ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ถฉ๋์ ๋ฐฉ์งํ๋ ๊ฒ ์ธ์๋ ์ ์ ๋ถ์์ ํตํ ์กฐ๊ธฐ ๊ฐ์ง๋ ๋์ค์ ์ถ์ ํ๊ธฐ ์ด๋ ค์ด ์จ๊ฒจ์ง ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์์ฑ ๋ฒ๊ทธ๋ ์ผ๋ฐ์ ์ธ ํ ์คํธ ์ค์๋ ํจ๊ณผ๊ฐ ๋ํ๋์ง ์์ ์ ์์ง๋ง ์์คํ ์ด ํ์ฅ๋๊ฑฐ๋ ๊ณผ๋ถํ ์ํ์์ ์คํ๋ ๋ ๋ํ๋ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ์๋ณํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์์ ํ ๋๊ธฐํ ํจํด๊ณผ ์ค๋ ๋ ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ์ฌ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฏธ๋์ ํผ๋์ ํผํ ์ ์์ต๋๋ค.
๊ฒ๋ค๊ฐ ๊ฐ๋ฐ ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ํจ์์์ ๊ฐ๋จํ ๋๋ฝ๋ ์ฒดํฌ๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๊ธฐ์ ๋ถ์ฑ๊ฐ ๋์ ๋ ๋๊ท๋ชจ ๋ค์ธต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ฅ๋ฅผ ํธ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค. ์กฐ๊ธฐ ์ค๋ฅ ๊ฐ์ง๋ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ๊น๋ํ๊ณ ์์ ์ ์ผ๋ก ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋ฐ ์๊ฐ ๋ฐ ๋น์ฉ ์ ๊ฐ
์ํํธ์จ์ด ๊ฐ๋ฐ์ โโ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค์ด๋ฉฐ, ๊ฐ ๋ฐ๋ณต์ ๊ณ ์ ํ ์ผ๋ จ์ ๊ณผ์ ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ฐ์ฅ ํฐ ์ํ ์ค ํ๋๋ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋ ์๋ก ์์ ๋น์ฉ์ด ๋ ๋ง์ด ๋ ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ธฐ ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋ ๊ฐ๋จํ ๋ฌธ์ ๋ ์ข ์ข ์์ ํ๋ ๋ฐ ์ต์ํ์ ์๊ฐ๋ง ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๊ฐ๋ฐ ์ฃผ๊ธฐ ํ๋ฐ์ด๋ ๋ฐฐํฌ ํ์์ผ ์๋ณ๋๋ ๊ฒฝ์ฐ, ํนํ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๊ทธ ์ฌ์ด์ ์๋นํ ์งํํ ๊ฒฝ์ฐ ์ง๋จ, ํจ์น ๋ฐ ํ ์คํธ์ ์๋นํ ๋ ธ๋ ฅ์ด ํ์ํ ์ ์์ต๋๋ค.
Python์ผ๋ก ๊ตฌ์ถ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋นํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ก ์ธํด ์ฌ๊ฐํ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ์ด์ฌ๋ณต์ฌimport sqlite3
def fetch_data():
connection = sqlite3.connect('data.db')
cursor = connection.cursor()
cursor.execute("SELECT * FROM large_table") # Inefficient, fetches unnecessary data
data = cursor.fetchall()
connection.close()
return data
๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฌธ์ ๋ฅผ ์ผ์ฐ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ก๋์ ์ ๋ฐฐํฌ๋ ํ์์ผ ์ด ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ด ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํ๋ ๋ฐ ๋๋ ๋น์ฉ์ด ์๋นํ ์ ์์ผ๋ฉฐ, ํนํ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ๋๋์ ์ผ๋ก ์ฌ๊ตฌ์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ์ ํ์ ๋นํจ์จ์ฑ์ ์๋์ผ๋ก ์๋ณํ๊ณ ๊ด๋ จ ์ด๋ง ๊ฐ์ ธ์ค๊ฑฐ๋ ํ์ด์ง ๋งค๊น์ ์ถ๊ฐํ์ฌ ๊ฒ์๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ๋ฑ ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ต์ ํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด๊ธฐ ๋จ๊ณ์์ ํด๊ฒฐํ๋ฉด ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฌ์ค๊ณ๋ฅผ ํผํ ์ ์์ผ๋ฉฐ ๋ฐฐํฌ ํ์ ๋ฐ์ํ ์ ์๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด๋ฌํ ๋นํจ์จ์ฑ์ ์ผ์ฐ ํฌ์ฐฉํจ์ผ๋ก์จ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋์ ๋ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ ๋์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์ง์คํ ์ ์์ผ๋ฏ๋ก ๋๋ฒ๊น ๋ฐ ํจ์น ๋ฌธ์ ์ ์์๋๋ ์ ์ฒด ์๊ฐ์ด ์ค์ด๋ญ๋๋ค. ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถ์๋ ํ ํซํฝ์ค๋ ๊ธด๊ธ ํจ์น๊ฐ ์ค์ด๋ค์ด ๊ณ ๊ฐ ์ง์ ๋ฐ ์ด์ ๋น์ฉ์ ๋ํ ๋ถ๋ด์ด ์ค์ด๋ญ๋๋ค.
์ํํธ์จ์ด์ ์์ ์ฑ์ด ์ด๊ธฐ๋ถํฐ ๋ณด์ฅ๋๋ฉด ํ์ ํ์๋ผ์ธ์ ๋ ์ ์์ธกํ๊ณ , ๋ฒ์ ์ฆ๊ฐ๋ฅผ ์ค์ด๊ณ , ๋ง๊ฐ์ผ์ ๋ ํจ์จ์ ์ผ๋ก ๋ง์ถ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋น์ฆ๋์ค ๋ชฉํ์ ๋ง์ถ ์ ์์ต๋๋ค.
์ฝ๋ ํ์ง ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ ํฅ์
์ฝ๋ ํ์ง์ ๊ฐ๋ฐ ํ๋ก์ธ์ค์์ ์ข ์ข ๊ฐ๊ณผ๋๋ ์ธก๋ฉด์ด์ง๋ง, ์ํํธ์จ์ด์ ์ ์ง ๊ด๋ฆฌ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ฅ๊ธฐ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ค๋ฅ๋ฅผ ์ผ์ฐ ๊ฐ์งํ๋ฉด ๋ฒ๊ทธ๊ฐ ํ๋๋๊ธฐ ์ ์ ์์ ๋ ๋ฟ๋ง ์๋๋ผ ์ฝ๋์ ์ ๋ฐ์ ์ธ ํ์ง์ด ํฅ์๋ฉ๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊น๋ํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ํฅํ ์ ๋ฐ์ดํธ์ ๋ฒ๊ทธ ์์ ์ด ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค.
์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฐ์๊ฐ ์ฝ๋ฉ ํ์ค์ ์ค์ํ๊ณ , ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์๋ณํ๊ณ , ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ฐฉํดํ ์ ์๋ ํจ์ ์ ํผํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋นํจ์จ์ ์ด๊ฑฐ๋ ์ค๋ณต๋ ์ฝ๋๋ ๋์ค์ ์์ , ๋๋ฒ๊น ๋๋ ํ์ฅํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. JavaScript ํ๋ก์ ํธ์์ ์ ์ ํ ์ถ์ํ ์์ด ๋ฃจํ๋ ๋ณต์กํ ํจ์ ํธ์ถ์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ณต์ฌfunction findMax(arr) {
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
์์ ํจ์๊ฐ ์๋ํ์ง๋ง, ๋ ๊ฐ์ํ๋๊ฑฐ๋ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด์ง ์ ์์ผ๋ฉฐ, ์ด๋ ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ์ ์ํด ํ๋๊ทธ๊ฐ ์ง์ ๋ ๊ฒ์
๋๋ค. ๊ถ์ฅ ์ฌํญ์ ๋ด์ฅ ํจ์๋ ๋ ํ๋์ ์ธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. Math.max(...arr). ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ผ์ฐ ๋ฐ๊ฒฌํ๋ฉด ๊ฐ๋ฐ์๋ ๋์ค์ ๋ฆฌํฉํ ๋ง์ ์๊ฐ์ ํ๋นํ์ง ์์๋ ๋ฉ๋๋ค.
์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฝ๋ ์ค๋ณต, ์ง๋์น๊ฒ ๋ณต์กํ ๋ฉ์๋ ๋๋ ํฐ ํด๋์ค์ ๊ฐ์ด ์ ์ง ๊ด๋ฆฌ์ฑ์ด ๋จ์ด์ง๋ ํจํด์ ์๋ณํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ "์ฝ๋ ๋์"๋ฅผ ์ผ์ฐ ๊ฐ์งํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๋ ๋ชจ๋ํ๋๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ๋ก ๋ฆฌํฉํ ๋งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ธธ์ด๋ฅผ ์ด๊ณผํ๊ฑฐ๋ ๋์ ์ฌ์ดํด๋ก๋งคํฑ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ํจ์๋ฅผ ์๋ณํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์กฐ๊ฐ์ผ๋ก ๋๋๋๋ก ํ ์ ์์ต๋๋ค.
C++์ ์๋ก, ํด๋์ค์ ์ฑ ์์ด ๋๋ฌด ๋ง์ ๋ณต์ก์ฑ์ด ๋์์ง๋ ์ํฉ์ ์์ํด ๋ณด์ธ์.
cpp๋ณต์ฌclass UserManager {
public:
void addUser(string username) {
// Add user to the database
}
void removeUser(string username) {
// Remove user from the database
}
void updateUser(string username, string newInfo) {
// Update user data
}
void logUserActivity(string username) {
// Log user activity
}
};
์ ์ ๋ถ์์ ์ด ํด๋์ค๊ฐ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐํ๋ค๊ณ ํ์ํ์ฌ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ ์์ ํด๋์ค๋ก ๋ถํ ํ ๊ฒ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ผ์ฐ ํด๊ฒฐํ๋ฉด ๊ธฐ์ ๋ถ์ฑ๊ฐ ์์ด๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ํ๋ก์ ํธ๊ฐ ํ์ฅ๋จ์ ๋ฐ๋ผ ๋ณด๋ค ๊ฒฌ๊ณ ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ฉ๋๋ค.
๋์ฑ์ด ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ๋ฌธ์๊ฐ ์ฝ๋๋ฒ ์ด์ค์ ์ผ์นํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ ์ ํ ์ฃผ์์ด๋ ๋ฌธ์๊ฐ ์๋ ์ฝ๋ ์์ญ์ ํ์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ค๋ช ์ ์ ๊ณตํ๊ณ ํฅํ ๊ธฐ์ฌ์๋ฅผ ์ํด ์ฝ๋์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ ํ๋๋ก ํ ์ ์์ต๋๋ค. ์ ๋ฌธ์ํ๋ ์ฝ๋๋ ์ ์ง ๊ด๋ฆฌ์ ์ค์ํ๋ฉฐ, ํนํ ๋๊ท๋ชจ ํ์ด๋ ์ฅ๊ธฐ ํ๋ก์ ํธ์์ ๊ทธ๋ ์ต๋๋ค.
์ ์ ์ฝ๋ ๋ถ์์ผ๋ก ์ด๋ค ์ ํ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์๋์?
์ ์ ์ฝ๋ ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ๋ ์ฝ๋์ ์ ์ฌ์ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ค์ํ ๊ธฐ์ ์ ๋๋ค. ์์ค ์ฝ๋๋ ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ๋ถ์ํจ์ผ๋ก์จ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋จํ ๊ตฌ๋ฌธ ์ค๋ฅ์์ ๋ณต์กํ ๋ณด์ ์ทจ์ฝ์ฑ๊น์ง ๊ด๋ฒ์ํ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ ์๋ฐฉ์ ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ์ฌ ์ฝ๋ ํ์ง, ์ ์ง ๊ด๋ฆฌ์ฑ ๋ฐ ๋ณด์์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ ์ ์ฝ๋ ๋ถ์์ ์ด๋ค ๊ตฌ์ฒด์ ์ธ ์ ํ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ผ๋ฉฐ, ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ๊น์? ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ตฌ๋ฌธ ์ค๋ฅ
๊ตฌ๋ฌธ ์ค๋ฅ๋ ์ฝ๋๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ ๊ท์น์ ์๋ฐํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ์ปดํ์ผํ๊ฑฐ๋ ์คํํ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ์ข ์ข ๊ตฌ๋์ ๋๋ฝ, ์๋ชป๋ ํค์๋ ์ฌ์ฉ ๋๋ ์ผ์นํ์ง ์๋ ๊ดํธ์ ๊ฐ์ ๊ฐ๋จํ ์ค์๋ก ์ธํด ๋ฐ์ํ๋ฏ๋ก ์ ์ ์ฝ๋ ๋ถ์์์ ๊ฐ์งํ๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ์ค ํ๋์ ๋๋ค. ๋ฐํ์๊น์ง ์์์ฐจ๋ฆฌ์ง ๋ชปํ ์ ์๋ ๋ ผ๋ฆฌ์ ์ค๋ฅ์ ๋ฌ๋ฆฌ ๊ตฌ๋ฌธ ์ค๋ฅ๋ ์คํ์ ์์ ํ ๋ฐฉํดํ์ฌ ๊ฐ๋ฐ์๊ฐ ์งํํ๊ธฐ ์ ์ ์ด๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ๊ตฌ๋ฌธ ๊ท์น์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ ์ค๋ฅ์ ๊ทธ ์ํฅ์ ์ดํดํ๋ ๊ฒ์ด ๊นจ๋ํ๊ณ ์ค๋ฅ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์์ ๊ฐ์งํ ์ ์๋ ๊ฐ์ฅ ๋น๋ฒํ ๊ตฌ๋ฌธ ์ค๋ฅ ์ค ์ผ๋ถ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ธ๋ฏธ์ฝ๋ก ์ด ์์ต๋๋ค
์ธ๋ฏธ์ฝ๋ก ์ด ๋๋ฝ๋ ๊ฒ์ ์ธ๋ฏธ์ฝ๋ก ์ด ํ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ฐ์ฅ ํํ ๊ตฌ๋ฌธ ์ค๋ฅ ์ค ํ๋์ ๋๋ค. C, ์๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ. ์ธ๋ฏธ์ฝ๋ก ์ ๋ฌธ์ฅ์ ๋์ ํ์ํ์ฌ ์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ๊ฐ ์๋ก ๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ์ ์ ํ ๊ตฌ๋ณํ ์ ์๋๋ก ํฉ๋๋ค. ์๋ตํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ฌธ์ฅ์ด ๋๋๋ ๊ณณ์ ์๋ชป ํด์ํ์ฌ ์์์น ๋ชปํ ๋์, ๊ฒฝ๊ณ ๋๋ ์์ ํ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ค์ํ ์ธ์ด์ ๋ฏธ์น๋ ์ํฅ
- C / C ++: C์ C++์์ ๋ชจ๋ ๋ฌธ์ฅ์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋์ผ ํฉ๋๋ค. ํ๋๋ฅผ ์๋ตํ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์คํ๋์ง ์์ต๋๋ค.
- ์๋ฐ: Java๋ ๋๋ถ๋ถ์ ๋ช ๋ น๋ฌธ์์ ์ธ๋ฏธ์ฝ๋ก ์ฌ์ฉ์ ๊ฐ์ ํ๋ฉฐ ํ๋๊ฐ ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ปดํ์ผ ์ค๋ฅ.
- JavaScript: JavaScript๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ์ธ๋ฏธ์ฝ๋ก ์ฝ์ (ASI)์ด ๊ธฐ๋ฅ์ ์์กดํ๋ฉด ๋ชจํธํ๊ฑฐ๋ ์๋์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์์ ์ฝ๋ ๋ฐ ์ค๋ฅ
C++ ์์ (์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ์ค๋ฅ)
cpp๋ณต์ฌํธ์ง#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" // Missing semicolon
return 0;
}
์ค๋ฅ ์ถ๋ ฅ:
์๋ณต์ฌํธ์งerror: expected ';' before 'return'
์ปดํ์ผ๋ฌ๋ ์ธ๋ฏธ์ฝ๋ก (;) ์ ์ return์ด๊ฒ์ด ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ๋์ง ์์ต๋๋ค.
Java ์์ (์ปดํ์ผ ์ค๋ฅ)
์๋ฐ๋ณต์ฌํธ์งpublic class Main {
public static void main(String[] args) {
System.out.println("Hello, World!") // Missing semicolon
}
}
์ค๋ฅ ์ถ๋ ฅ:
์๋ณต์ฌํธ์งerror: ';' expected
Java์์๋ ์ธ๋ฏธ์ฝ๋ก ์ฌ์ฉ์ ๊ฐ์ ํ๋ฉฐ, ์ด๋ฅผ ์๋ตํ๋ฉด ์ปดํ์ผ์ด ์คํจํฉ๋๋ค.
JavaScript ์์ (์ธ๋ฏธ์ฝ๋ก ์์ด๋ ์ ์ฌ์ ์ธ ํจ์ )
์๋ฐ์คํฌ๋ฆฝํธ๋ณต์ฌํธ์งfunction test() {
return
5 + 1;
}
console.log(test());
์์์น ๋ชปํ ์ถ๋ ฅ:
์๋ณต์ฌํธ์งundefined
JavaScript๋ ์๋์ผ๋ก ์ธ๋ฏธ์ฝ๋ก ์ ์ฝ์
ํฉ๋๋ค. return, ํจ์๋ ํ๊ฐ ์ ์ ์ข
๋ฃ๋ฉ๋๋ค. 5 + 1. ์ด๋ฌํ ์๋์น ์์ ๋์์ผ๋ก ์ธํด ๋ฏธ๋ฌํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ดํธ/๋๊ดํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.
๋๊ดํธ์ ๊ดํธ๋ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฝ๋ ๋ธ๋ก, ํจ์ ์ธ์ ๋ฐ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ์ ์ํฉ๋๋ค. ๊ดํธ๊ฐ ๋๋ฝ๋์๊ฑฐ๋, ์๋ชป ์ค์ฒฉ๋์๊ฑฐ๋, ์ผ์นํ์ง ์์ต๋๋ค.์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ๊ฐ ์ฝ๋์ ์ฌ๋ฐ๋ฅธ ๊ตฌ์กฐ๋ฅผ ํ๋จํ ์ ์์ด ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ดํธ๊ฐ ๋ง์ง ์๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์
- ๋ซํ์ง ์์ ๊ดํธ: ๋ซ๋ ๊ฒ์ ์์ด๋ฒ๋ฆผ
{},[]๋ฐ()์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. - ์๋ชป๋ ์ค์ฒฉ: ๊ดํธ๋ฅผ ์๋ชป๋ ์์๋ก ๋ซ์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ์คํ ๋ ผ๋ฆฌ๊ฐ ๊นจ์ง๋๋ค.
- ์๋ชป๋ ๊ดํธ: ๊ดํธ๋ฅผ ์๋ชป ๋ฃ์ผ๋ฉด ํํ์ด ์์์น ๋ชปํ๊ฒ ๊ทธ๋ฃนํ๋ ์ ์์ต๋๋ค.
์๋ชป๋ ํค์๋
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ๋ช ๋ น์ด๋ ๊ตฌ์กฐ๋ก ์ฌ์ฉ๋๋ ์์ฝ ํค์๋๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํค์๋๋ฅผ ์๋ชป ์ฌ์ฉํ๋ฉด(์ฒ ์๊ฐ ํ๋ฆฌ๊ฑฐ๋ ์๋์น ์์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ) ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ชป๋ ํค์๋๋ก ์ธํ ์ผ๋ฐ์ ์ธ ๋ฌธ์
- ์ฒ ์๊ฐ ํ๋ฆฐ ํค์๋: ์ฌ์ฉ
fuction๋์functionJavaScript์์. - ์์ฝ์ด์ ์ค์ฉ: ์ฌ์ฉ
classJava์์ ๋ณ์ ์ด๋ฆ์ผ๋ก. - ์๋ชป๋ ํค์๋ ๋ฐฐ์น: ๊ธ์ฐ๊ธฐ
returnPython ํจ์ ๋ฐ์์.
์ ํ ์ค๋ฅ
์ ํ ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ ์ ํ๊ณผ ํธํ๋์ง ์๋ ๋ณ์์ ๋ํ ์์ ์ ์ํํ ๋ ๋ฐ์ํฉ๋๋ค. ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ณ์๊ฐ ์์ ์ ํ์ ๊ฐ์ ์ ์งํ๋๋ก ์๊ฒฉํ ์ ํ ๊ท์น์ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ๊ท์น์ ์๋ฐํ๋ฉด ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๊ฐ ๋ฐํ์ ์ ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ์ฌ ์ ์ฌ์ ์ธ ์ถฉ๋์ด๋ ์์์น ๋ชปํ ๋์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ ํ ์ค๋ฅ๋ ์ข ์ข ์ ํ ๋ถ์ผ์น, ์๋ฌต์ ์ ํ ๋ณํ ๋๋ ์๋ชป๋ ํจ์ ์๊ทธ๋์ฒ์์ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ํนํ ๋ค์๊ณผ ๊ฐ์ ์ ์ ์ ํ ์ธ์ด์์ ํํฉ๋๋ค. ์๋ฐ, C++, ํ์ ์คํฌ๋ฆฝํธ, ๊ทธ๋ฌ๋ ๋์ ์ผ๋ก ์ ๋ ฅ๋๋ ์ธ์ด๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ํ์ด์ฌ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์ํฅ์๋ฐ์ ์ ์์ต๋๋ค.
์ ์ ์ฝ๋ ๋ถ์์์ ๊ฐ์งํ ์ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ ๊ด๋ จ ์ค๋ฅ ์ค ์ผ๋ถ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ํ ๋ถ์ผ์น
A ์ ํ ๋ถ์ผ์น ๋ณ์์ ํธํ๋์ง ์๋ ์ ํ์ ๊ฐ์ด ํ ๋น๋๊ฑฐ๋ ํธํ๋์ง ์๋ ๋ฐ์ดํฐ ์ ํ ๊ฐ์ ์ฐ์ฐ์ด ์ํ๋ ๋ ๋ฐ์ํฉ๋๋ค. ๋๋ถ๋ถ์ ์ ์ ์ ํ ์ธ์ด๋ ์ปดํ์ผ ํ์์ ์ด๋ฌํ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๋ ๋ฐ๋ฉด, ๋์ ์ ํ ์ธ์ด๋ ๋ฐํ์์๋ง ์ด๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
์ ํ ๋ถ์ผ์น์ ์ผ๋ฐ์ ์ธ ์์ธ
- ์ ์๋ฅผ ๋ฌธ์์ด ๋ณ์์ ํ ๋นํฉ๋๋ค(๋๋ ๊ทธ ๋ฐ๋๋ก).
- ํธํ๋์ง ์๋ ์ ํ์ ๋ํ ์ํ ์ฐ์ฐ์ ์ํํฉ๋๋ค.
- ํจ์ ๋งค๊ฐ๋ณ์์ ์๋ชป๋ ์ ํ์ ์ ๋ฌํฉ๋๋ค.
C++์์๋ ๋ฌธ์์ด์ ์ ์๋ก ์๋ฌต์ ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์์์ ์ ํ ๋ณํ(ํ์ ๊ฐ์ ๋ณํ ๋ฌธ์ )
์์์ ํ์ ๋ณํ ๋๋ ์ ํ ๊ฐ์ , ์ธ์ด๊ฐ ์์ ์ค์ ํ ๋ฐ์ดํฐ ์ ํ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ์๋์ผ๋ก ๋ณํํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด ๋์์ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ ์ฉํ์ง๋ง ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์๋ ์์ต๋๋ค. ์ ์ ์ ํ ์ธ์ด์ ๊ฐ์ C++์ ์๋ฐ ์๊ฒฉํ ์ ํ ๋ณํ ๊ท์น์ด ์๋ ๋ฐ๋ฉด, ๋์ ์ ํ ์ธ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ด์ฌ ๋ ๋ง์ ์ ์ฐ์ฑ์ ํ์ฉํ์ง๋ง ๋๋ก๋ ์๋์น ์์ ๋์์ด ๋ฐ์ํ๊ธฐ๋ ํฉ๋๋ค.
์์์ ์ ํ ๋ณํ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์
- ์ซ์์์ ๋ฌธ์์ด๋ก์ ์๋์น ์์ ๋ณํ ๋๋ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ.
- ๋ถ๋ ์์์ ์ซ์๋ฅผ ์ ์๋ก ๋ณํํ๋ฉด ์ ๋ฐ๋๊ฐ ๋จ์ด์ง๋๋ค.
- ํ์ ๊ฐ์ ๋ณํ์ผ๋ก ์ธํด ์์์น ๋ชปํ ๋ถ์ธ ๊ณ์ฐ์ด ๋ฐ์ํฉ๋๋ค.
C++์์๋ ์๋ฌต์ ๋ณํ์ด ๊ฐ๋ฅํ์ง๋ง ์๋ผ๋ด๋ค ์ฌ์ ๊ฒฝ๊ณ ์์ด ์์์ ์ ์ ๋ ฅํ๋ฉด ์๋์น ์์ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์๋ชป๋ ๊ธฐ๋ฅ ์๋ช
ํจ์ ์๊ทธ๋์ฒ๋ ํจ์ ์ด๋ฆ, ๋งค๊ฐ๋ณ์, ๋ฐํ ์ ํ์ ์ ์ํฉ๋๋ค. ํจ์๊ฐ ์๋ชป๋ ์ธ์(์๋ชป๋ ์ ํ, ์ซ์ ๋๋ ์์)๋ก ํธ์ถ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ์ ์ ํ ์ธ์ด๋ ์ปดํ์ผ ํ์์ ํจ์ ์๊ทธ๋์ฒ๋ฅผ ์ ์ฉํ๋ ๋ฐ๋ฉด, ๋์ ์ ํ ์ธ์ด๋ ๋ฐํ์์๋ง ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
์๋ชป๋ ํจ์ ์๋ช ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์
- ์๋ชป๋ ์ธ์ ์ ํ์ ์ ๋ฌํฉ๋๋ค.
- ๋งค๊ฐ๋ณ์๊ฐ ๋๋ฌด ๋ง๊ฑฐ๋ ๋๋ฌด ์ ์ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
- ์๋ชป๋ ๋ฐํ ์ ํ์ ์ฌ์ฉํฉ๋๋ค.
C++์์๋ ํจ์ ์ธ์์ ๋ํด ์๊ฒฉํ ์ ํ ์ผ์น๊ฐ ์ ์ฉ๋ฉ๋๋ค.
๋ ผ๋ฆฌ์ ์ค๋ฅ
๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด ์ปดํ์ผ๋๊ณ ์คํ๋์ง๋ง ์๋ชป๋ ๋ ผ๋ฆฌ๋ก ์ธํด ์์ํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ๊ตฌ๋ฌธ ๋๋ ์ ํ ์ค๋ฅ์ ๋ฌ๋ฆฌ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ์ฆ๊ฐ์ ์ธ ์คํจ๋ ์ถฉ๋์ ์ผ์ผํค์ง ์์ต๋๋ค. ๋์ ํน์ ์กฐ๊ฑด์ด ๊ฒฐํจ์ ํธ๋ฆฌ๊ฑฐํ ๋๊น์ง ์์์ฐจ๋ฆฌ์ง ๋ชปํ ์ ์๋ ์๋์น ์์ ๋์์ผ๋ก ์ด์ด์ง๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ์๋ชป๋ ๊ณ์ฐ, ๋ฌดํ ๋ฃจํ, ๋๋ฌํ ์ ์๋ ์ฝ๋ ๋๋ ๋นํจ์จ์ ์ธ ์คํ ๊ฒฝ๋ก๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ์ปดํ์ผ ๋๋ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ์์ฑํ์ง ์์ผ๋ฏ๋ก ํ์งํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด ๋ฌธ์ ์ค ํ๋์ ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ค๋ณต ์กฐ๊ฑด, ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ๋๋ ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๋ก ํ๊ฐ๋๋ ์ฐ์ฐ๊ณผ ๊ฐ์ด ์ ์ฌ์ ์ธ ๋ ผ๋ฆฌ์ ๊ฒฐํจ์ ์์ฌํ๋ ํจํด์ ์๋ณํ์ฌ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์์ ํ์งํ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋ฌํ ์ ์๋ ์ฝ๋
๋๋ฌํ ์ ์๋ ์ฝ๋๋ ์คํ์ ๋ฐฉํดํ๋ ์ ํ ๋ ผ๋ฆฌ๋ก ์ธํด ์คํ๋ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ถ๋ถ์ ๋งํฉ๋๋ค. ์ด๋ ์ข ์ข ์๋ชป๋ ๋ฐํ ๋ฌธ, ์๋ชป๋ ์กฐ๊ฑด ๊ฒ์ฌ ๋๋ ๋ฃจํ์ ๋ถํ์ํ ์ค๋จ์ ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
๋ฌดํ ๋ฃจํ
๋ฌดํ ๋ฃจํ๋ ์๋ชป๋ ๋ฃจํ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ฃจํ๊ฐ ๋ฌดํํ ๊ณ์ ์คํ๋ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ก ์ธํด ๊ณผ๋ํ CPU ์ฌ์ฉ, ์๋ตํ์ง ์๋ ํ๋ก๊ทธ๋จ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐ๋ ์ฝ๋
๋ฐ๋ ์ฝ๋๋ ์กด์ฌํ์ง๋ง ์คํ๋๊ฑฐ๋ ์ฌ์ฉ๋์ง ์๋ ํ๋ก๊ทธ๋จ ์น์ ์ ๋งํฉ๋๋ค. ์ ์ด ํ๋ฆ์ ์ํด ์ฐจ๋จ๋ ๋๋ฌํ ์ ์๋ ์ฝ๋์ ๋ฌ๋ฆฌ ๋ฐ๋ ์ฝ๋๋ ๋ ๊ฑฐ์ ๊ตฌํ, ๋ฆฌํฉํ ๋ง ๋ฌธ์ ๋๋ ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ๋ฐ ํจ์๋ก ์ธํด ์กด์ฌํ ์ ์์ต๋๋ค.
๋ฐ๋ ์ฝ๋์ ์ผ๋ฐ์ ์ธ ์์ธ
- ํธ์ถ๋์ง ์๋ ํจ์.
- ์ ์ธ๋์์ง๋ง ์ฌ์ฉ๋์ง ์๋ ๋ณ์์ ๋๋ค.
- ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์คํํ๋ ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ์ ๋๋ค.
์๋ชป๋ ๋ฃจํ ์กฐ๊ฑด
์๋ชป๋ ๋ฃจํ ์กฐ๊ฑด์ ๋ฐ๋ณต์ ๊ฑด๋๋ฐ๊ฑฐ๋, ํ์ ์ด์์ผ๋ก ์คํํ๊ฑฐ๋, ์ ํ ์คํํ์ง ๋ชปํ๋ ๋ฑ ์๋์น ์์ ๋์์ ์ด๋ํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ์ฑ๋ฅ ๋นํจ์จ์ฑ, ์๋ชป๋ ๊ณ์ฐ ๋๋ ๋ฌดํ ๋ฃจํ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
์๋ชป๋ ๋ฃจํ ์กฐ๊ฑด์ ์ผ๋ฐ์ ์ธ ์์ธ
- ์ฌ์ฉ
<=๋์<, ํน์ ๊ทธ ๋ฐ๋๋ก๋. - ์กฐ๊ฑด์์ ์๋ชป๋ ๋ณ์๋ฅผ ๋น๊ตํ๊ณ ์์ต๋๋ค.
- ๋ฃจํ ์ ์ด ๋ณ์๋ฅผ ์๋ชป ์ ๋ฐ์ดํธํ์ต๋๋ค.
๋ณด์ ์ทจ์ฝ์
๋ณด์ ์ทจ์ฝ์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์์ ๊ณต๊ฒฉ, ๋ฐ์ดํฐ ์นจํด ๋๋ ๋ฌด๋จ ์ก์ธ์ค์ ๋ ธ์ถ์ํค๋ ์ํํธ์จ์ด์ ์ค๋ํ ์ค๋ฅ์ ๋๋ค. ์ด๋ฌํ ์ทจ์ฝ์ฑ์ ์ข ์ข ์๋ชป๋ ์ฝ๋ฉ ๊ดํ, ๋ถ์ ์ ํ ์ ๋ ฅ ๊ฒ์ฆ ๋๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์๋ชป๋ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ๊ตฌ๋ฌธ ๋๋ ๋ ผ๋ฆฌ ์ค๋ฅ์ ๋ฌ๋ฆฌ ๋ณด์ ์ทจ์ฝ์ฑ์ ๋ฐ๋์ ํ๋ก๊ทธ๋จ ์คํ์ ์ค๋จ์ํค์ง ์๊ณ ๋์ ์ ์ฉ์ ์ทจ์ฝํ๊ฒ ๋ง๋ญ๋๋ค.
์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ๋ณด์ ์ทจ์ฝ์ฑ์ ์๋ณํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ ์ ๋ถ์๊ธฐ๋ ์๋ ค์ง ๋ณด์ ๊ฒฐํจ์ ๋ํ ์ฝ๋๋ฅผ ์ค์บํ์ฌ SQL ์ฃผ์ , ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS), ๋ฒํผ ์ค๋ฒํ๋ก, ์์ ํ์ง ์์ ์ํธํ ๊ดํ ๋ฐ ํ๋์ฝ๋ฉ๋ ๋น๋ฐ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ํ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋์์ ์ด๋ฌํ ์ทจ์ฝ์ฑ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
SQL ์ฃผ์
SQL ์ฃผ์ (SQLi)์ ๊ณต๊ฒฉ์๊ฐ ์ฌ์ฉ์ ์ ๋ ฅ์ ํตํด ์ ์ฑ SQL ์ฝ๋๋ฅผ ์ฃผ์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์กฐ์ํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด ์ทจ์ฝ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค. ์ ๋ ฅ์ด ์ ๋๋ก ์ ๋ฆฌ๋์ง ์์์ต๋๋ค๊ณต๊ฒฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ค์ํ ์ ๋ณด์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค๋ฅผ ์ป์ ์ ์์ต๋๋ค.
SQL ์ฃผ์ ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ฐ์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ๋ ฅ์ SQL ์ฟผ๋ฆฌ์ ์ง์ ์ฐ๊ฒฐ
- ์ค๋น๋ ๋ฌธ์ฅ์ด๋ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํจ
- ์์, URL ๋๋ ์ฟ ํค์์ ํ์ธ๋์ง ์์ ์ ๋ ฅ ํ์ฉ
์ฌ์ดํธ ๊ฐ ์คํฌ๋ฆฝํ (XSS)
ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS)์ ๊ณต๊ฒฉ์๊ฐ ์น ํ์ด์ง์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ์ฌ ํผํด์์ ๋ธ๋ผ์ฐ์ ์์ JavaScript๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ ์ธ์ ํ์ด์ฌํน, ๋ฐ์ดํฐ ๋๋ ๋ฐ ํผ์ฑ ๊ณต๊ฒฉ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
XSS์ ์ผ๋ฐ์ ์ธ ์์ธ
- ์ถ๋ ฅ ์ค ๊ฒ์ด๋์ง ์์ ์ฌ์ฉ์ ์ ๋ ฅ HTML๋ก ์ง์
- JavaScript ์คํ ํ์ฉ ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ
- ์ ๋ ฅ ํ๋์์ ํน์๋ฌธ์์ ๋ถ์ ์ ํ ์ด์ค์ผ์ดํ
๋ฒํผ ์ค๋ฒํ๋ก
๋ฒํผ ์ค๋ฒํ๋ก๋ ํ๋ก๊ทธ๋จ์ด ๋ฒํผ(๋ฉ๋ชจ๋ฆฌ ํ ๋น)์ ์ ์ฅํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋ ๋ฐ์ํ๋ฉฐ, ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์์์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถฉ๋ํ๊ฑฐ๋, ์์์ ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋, ๊ถํ์ ์์น์ํฌ ์ ์์ต๋๋ค.
๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ์ด์ ๋ฐ์:
- ๊ณ ์ ํฌ๊ธฐ ๋ฒํผ ์ฌ์ฉ ์ ๋ ฅ ๊ธธ์ด๋ฅผ ํ์ธํ์ง ์๊ณ
- ์ ๋ ฅ ๊ฒฝ๊ณ ๊ฒ์ฆ ์คํจ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ ๋
- ์์ ํ์ง ์์ ํจ์ ์ฌ์ฉ ์ฒ๋ผ
gets(),strcpy()๊ธ๋ ๋ฐ์ผsprintf()C/C++๋ก
์์ ํ์ง ์์ ์ํธํ
์ฝํ๊ฑฐ๋ ์ค๋๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ณดํธ๋ ์ ๋ณด๋ฅผ ํด๋ , ์์ ๋๋ ์์กฐํ ์ ์๋ ๊ณต๊ฒฉ์์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋ฉ๋๋ค. ์ํธํ ๊ดํ์ด ๋ถ์กฑํ๋ฉด ๋ฐ์ดํฐ ์นจํด, ์ธ์ฆ ์ค๋จ ๋ฐ ํต์ ๋ณด์์ด ์์๋ ์ ์์ต๋๋ค.
์์ ํ์ง ์์ ์ํธํ ์ด์
- ์ค๋๋ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ (์: MD5, SHA-1, DES)
- ํ๋์ฝ๋ฉ ์ํธํ ํค ์์ค ์ฝ๋์์
- ์ ์ ํ ์ํธํ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํจ (์: AES์ ECB ๋ชจ๋)
ํ๋์ฝ๋ฉ๋ ๋น๋ฐ
์์ค ์ฝ๋์ ๋น๋ฐ๋ฒํธ, API ํค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช ๋๋ ์ํธํ ํค๋ฅผ ํ๋์ฝ๋ฉํ๋ ๊ฒ์ ์ฌ๊ฐํ ๋ณด์ ์ํ์ ๋๋ค. ๋ ธ์ถ๋๋ฉด ๊ณต๊ฒฉ์๋ ์์คํ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ API์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค๋ฅผ ์ป์ ์ ์์ต๋๋ค.
ํ๋์ฝ๋ฉ๋ ๋น๋ฐ์ ์ผ๋ฐ์ ์ธ ์์ธ
- ํ๊ฒฝ ๋ณ์ ๋์ ์์ค ํ์ผ์ ์๊ฒฉ ์ฆ๋ช ์ ์ฅ
- ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ฒ์ ์ ์ด(์: GitHub)์ ์ปค๋ฐ
- ํ๋ฐํธ์๋ JavaScript ์ฝ๋์ API ํค๋ฅผ ์ง์ ์๋ฒ ๋
๋ณด์ ์ทจ์ฝ์ฑ์ ๋ฌด๋จ ์ก์ธ์ค์์ ์ ์ฒด ์์คํ ์์์ ์ด๋ฅด๊ธฐ๊น์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๊ฐํ ์ํ์ ๋ ธ์ถ์ํต๋๋ค. ์์ ํ ์ฝ๋ฉ ๊ดํ๊ณผ ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ํตํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด ์ํํธ์จ์ด๊ฐ ์ ์์ ์ ์ฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค๋ฅ
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ์ ์ ํ๊ฒ ํ ๋น, ์ก์ธ์ค ๋๋ ํ ๋น ํด์ ํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ์ถฉ๋, ์ฑ๋ฅ ์ ํ ๋๋ ๋ฒํผ ์ค๋ฒํ๋ก ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ฑ๊ณผ ๊ฐ์ ์ฌ๊ฐํ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. C ๋ฐ C++์ ๊ฐ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ์ธ์ด๋ ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๋ฐ๋ฉด Java, Python ๋ฐ C#๊ณผ ๊ฐ์ ๊ฐ๋น์ง ์์ง ์ธ์ด๋ ์ด๋ฌํ ๋ฌธ์ ์ค ๋ง์ ๋ถ๋ถ์ ์ํํ์ง๋ง ์์ ํ ๋ฉด์ญ์ด ์๋ ๊ฒ์ ์๋๋๋ค.
์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ํ ๋น๋๊ณ ํด์ ๋๋์ง ๋ถ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ ์ ๋ถ์์์ ์๋ณํ ์ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์
๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ง๋ง ๊ฒฐ์ฝ ํด์ ํ์ง ์์ ๋ ๋ฐ์ํ๋ฉฐ, ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์ง์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ ๊ฐ๋์ด ์ฑ๋ฅ์ด ์ ํ๋๊ฑฐ๋ ์์คํ ์ด ์ถฉ๋ํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์๋ฒ๋ ์๋ฒ ๋๋ ์์คํ ๊ณผ ๊ฐ์ ์ฅ๊ธฐ ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์๋ก ์ธํด
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น
malloc()ornew์ ํํ์ง ์๊ณfree()ordelete. - ๊ฐ๋น์ง ์์ง ์ธ์ด์์ ๋ถํ์ํ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์ ์งํฉ๋๋ค.
- ํ์ผ ํธ๋ค, ์์ผ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๋ซ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฝ๋๋ค.
๋งค๋ฌ๋ฆฐ ํฌ์ธํฐ
dangling ํฌ์ธํฐ๋ ์ด๋ฏธ ํ ๋น ํด์ ๋๊ฑฐ๋ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ํฌ์ธํฐ์ ๋๋ค. ์ด๋ฌํ ํฌ์ธํฐ์ ์ก์ธ์คํ๋ฉด ์ ์๋์ง ์์ ๋์, ์ถฉ๋ ๋๋ ๋ณด์ ์ทจ์ฝ์ฑ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
Dangling Pointer๊ฐ ๋ฐ์ํ๋ ์ด์
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง๋ง ํฌ์ธํฐ๋ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
- ํจ์์์ ๋ก์ปฌ ์คํ ๋ณ์๋ฅผ ๋ฐํํฉ๋๋ค.
- ํ ๋น ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํฉ๋๋ค.
๋๋ธ ํ๋ฆฌ
A ๋๋ธ ๋ฌด๋ฃ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ ๋ฒ ์ด์ ํด์ ํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค. ์์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ตฌ์กฐ ๋ค์๊ณผ ๊ฐ์ ๋ณด์ ์ ์ฉ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ํ ์์ ๊ณต๊ฒฉ.
Double Free ์ค๋ฅ์ ์ผ๋ฐ์ ์ธ ์์ธ
- ํธ์ถ
free()ordelete๊ฐ์ ํฌ์ธํฐ์ ์ฌ๋ฌ ๋ฒ. - C++์์ ๊ณต์ ์์ ๊ถ์ ๋ถ์ ์ ํ๊ฒ ์ฌ์ฉํฉ๋๋ค.
- ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ํ ๋น ํด์ ๋ฅผ ์๋ชป ๊ด๋ฆฌํฉ๋๋ค.
๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ
A ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ํ๋ก๊ทธ๋จ์ด ์ค์ ๋ ํฌ์ธํฐ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค. NULL (๋๋ nullptr C++์์). ์ด๋ ๋ค์์ผ๋ก ์ด์ด์ง๋๋ค. ์ธ๊ทธ๋จผํ
์ด์
์ค๋ฅ or ๋ฐํ์ ์ถฉ๋.
๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ์ ์ผ๋ฐ์ ์ธ ์์ธ
- ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ด๊ธฐํํ๋ ๊ฒ์ ์์ต๋๋ค.
- ํ์ธ์ ์คํจ
NULL์ญ์ฐธ์กฐํ๊ธฐ ์ ์. - ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํ๊ณ ํฌ์ธํฐ๋ฅผ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
SMART TS XL ์ค๋ฅ ๊ฐ์ง๋ฅผ ์ํ ์ ์ ์ฝ๋ ๋ถ์ ์๋ฃจ์ ์ผ๋ก
SMART TS XL ํฌ๊ด์ ์ด๋ค ์ ์ ์ฝ๋ ๋ถ์(SCA) ๋๊ตฌ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ๋ฐฉ์งํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์คํ์์ด์ด๋ฅผ ํตํด ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ์๋ณํ์ฌ ์ฝ๋ ํ์ง, ๋ณด์ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. SMART TS XL ํนํ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ ์ ํจ๊ณผ์ ์ ๋๋ค. ๋์ ์ ๋ขฐ์ฑ๊ณผ ๊ท์ ์ค์์๋ฅผ ๋ค์ด ๊ธ์ต, ์๋ฃ, ์๋ฒ ๋๋ ์์คํ ๋ฑ์ ๋๋ค.
์ด ๋๊ตฌ๋ ํจ์จ์ ์ผ๋ก ๊ฐ์งํฉ๋๋ค ๊ตฌ๋ฌธ ์ค๋ฅ, ์ ํ ๋ถ์ผ์น ๋ฐ ๋ ผ๋ฆฌ ์ค๋ฅ, ๊ฐ๋ฐ์๊ฐ ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์๋ชป๋ ์ฐ์ฐ์, ๋๋ฌํ ์ ์๋ ์ฝ๋์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ค์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ ๋ณด์ ์ทจ์ฝ์ ๋ฅผ ํฌํจํ SQL ์ฃผ์ , ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๋ฐ ๋ฒํผ ์ค๋ฒํ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ด๋ฒ ์ํ์ ๊ฐํ๋ค๋ ๊ฒ์ ๋ณด์ฅํฉ๋๋ค. ๋ํ, SMART TS XL ๊ด๋ฆฌ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ฑ ๋ฉ๋ชจ๋ฆฌ ๋์, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐ ์ด์ค ํด์ C ๋ฐ C++ ๊ฐ๋ฐ์ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
์ค๋ฅ ๊ฐ์ง๋ฅผ ๋์ด์, SMART TS XL ๊ฐํ ์ฝ๋ ํ์ง ํ๋๊น ์ผ๋ก ์ค๋ณต, ์ง๋์น๊ฒ ๋ณต์กํ ๋ ผ๋ฆฌ, ๊ธด ํจ์, ๋ ๊นจ๋ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์ด์งํฉ๋๋ค. ์๋ฒฝํ๊ฒ ํตํฉ๋ฉ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ, IDE ๋ฐ ๋ณด์ ์ค์ ํ๋ ์์ํฌ๋ฐ๋ผ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํํ๊ณ ๋์ ์ฝ๋ ์์ ์ฑ์ ๋ณด์ฅํ๋ ค๋ ๊ฐ๋ฐ ํ์๊ฒ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ๋๋ค.
์ค๋ฅ ๊ฐ์ง์์ ์ ์ ์ฝ๋ ๋ถ์์ ์ค์์ฑ
์ ์ ์ฝ๋ ๋ถ์(SCA)์ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ค์ํ ๋๊ตฌ๋ก, ํ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด ์ด๊ธฐ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ํด๊ฒฐํ ์ ์๋๋ก ํฉ๋๋ค. SCA ๋๊ตฌ๋ ์คํ ์์ด ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ๊ตฌ๋ฌธ ์ค๋ฅ, ์ ํ ๋ถ์ผ์น, ๋ ผ๋ฆฌ์ ์ค๋ฅ, ๋ณด์ ์ทจ์ฝ์ฑ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฌธ์ , ๋์์ฑ ๋ฌธ์ , ์ฝ๋ ํ์ง ๊ฒฐํจ ๋ฑ ๊ด๋ฒ์ํ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ํด๊ฒฐ๋์ง ์์ผ๋ฉด ์ํํธ์จ์ด ์ค๋ฅ, ๋ณด์ ์นจํด, ์ฑ๋ฅ ์ ํ, ์ ์ง ๊ด๋ฆฌ ๋น์ฉ ์ฆ๊ฐ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
SCA ์๋ฃจ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. SMART TS XL ์๋ํ๋ ์ค๋ฅ ๊ฐ์ง๋ฅผ ์ ๊ณตํ์ฌ ์ฝ๋ ์์ ์ฑ, ๋ณด์ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํํ๊ณ , ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ค์๋ฅผ ๋ฐฉ์งํ๋ฉฐ, ์ ๊ณ ํ์ค ์ค์๋ฅผ ๊ฐํํฉ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ, IDE ๋๋ ๋ณด์ ๊ฐ์ฌ๋ฅผ ํตํด SCA๋ฅผ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํจ์ผ๋ก์จ ์กฐ์ง์ ๋๋ฒ๊น ์๊ฐ์ ์ค์ด๊ณ , ์ํ์ ์ต์ํํ๋ฉฐ, ์ ๋ฐ์ ์ธ ์ํํธ์จ์ด ํ์ง์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ํํธ์จ์ด ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ ์๋์ ์ ์ ์ฝ๋ ๋ถ์์ ํตํ ์ฌ์ ์ ์ค๋ฅ ๊ฐ์ง๋ ํจ์จ์ ์ด๊ณ ์์ ํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ค์ํ ์ทจ์ฝ์ฑ์ ํด๊ฒฐํ๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ต์ ํํ๋ SCA๋ ๋ชจ๋ ์ฐ์ ์์ ๊ฒฌ๊ณ ํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ํํธ์จ์ด๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.