์น ์ฌ์ดํธ ๊ฐ๋ฐ_๊ธฐ์ด ๋ฌธ๋ฒ ์ ๋ฆฌ
1.HTML
1.1. HTML์ด๋
HTML๋ก ์น ์ฌ์ดํธ์ ๊ตฌ์กฐ๋ฅผ ์ ์ -> CSS๋ก ์์๊ฒ ๋์์ธ ํ ๋ค -> JS๋ก ๋์์ํจ๋ค -> ์น ์ฌ์ดํธ/์น ๋ฌธ์ ์์ฑ
Hyper(์ต๊ณ ์) Text Markup Language์ ์ฝ์ด๋ก, ๋งํฌ์ ์ธ์ด์ด๋ค. ๋งํฌ์ ์ธ์ด๋, ํ๊ทธ ๋ฑ์ ์ด์ฉํ์ฌ ๋ฌธ์๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ช ๊ธฐํ๋ ์ธ์ด์ ํ ๊ฐ์ง์ด๋ค. HTML์ ์ฝํ ์ธ ์ ์๋ก ๋ค๋ฅธ ๋ถ๋ถ๋ค์ ์์ฐ๊ฑฐ๋ ๊ฐ์ธ์ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณด์ด๊ฒ ํ๊ฑฐ๋ ํน์ ํ ๋ฐฉ์์ผ๋ก ๋์ํ๋๋ก ํ๋ ์ผ๋ จ์ ์์๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
1.2. HTML์ ๊ตฌ์ฑ ์์
-์ฌ๋ ํ๊ทธ(Opening tag): <[์์ ์ด๋ฆ]>์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ด๊ฒ์ ์์๊ฐ ์์๋๋ ๊ณณ, ๋๋ ํจ๊ณผ๋ฅผ ์์ํ๋ ๊ณณ์์ ๋ํ๋ธ๋ค.
-๋ซ๋ ํ๊ทธ(Closing tag): </[์์ ์ด๋ฆ]>์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ด๊ฒ์ ์์์ ๋์ ๋ํ๋ธ๋ค.
-์ฝํ ์ธ (Content): ์์์ ๋ด์ฉ(content)์ด๋ค.
-์์(Element): ์์๋ ์ฌ๋ ํ๊ทธ & ๋ซ๋ ํ๊ทธ $ ์ฝํ ์ธ ๋ก ์ด๋ฃจ์ด์ง๋ค.
-์์ฑ(Attribute): ์์ฑ์ ์ค์ ์ฝํ ์ธ ๋ก ํ์๋๊ธธ ์ํ์ง ์๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๋ด๋๋ค. ์์ฑ์ "์์ ์ด๋ฆ(๋๋ ์์๊ฐ ํ๋ ์ด์ ์์ฑ์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ด์ ์์ฑ)๊ณผ ์์ฑ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํ๋ค", ''์์ฑ ์ด๋ฆ ๋ค์๋ ๋ฑํธ(=)๊ฐ ์์ผ ํ๋ค", "์์ฑ ๊ฐ์ ์ ๋ค์ ์ด๊ณ ๋ซ๋ ์ธ์ฉ ๋ถํธ(""/'')๊ฐ ์์ด์ผ ํ๋ค"์ ์กฐ๊ฑด์ ํญ์ ์ถฉ์กฑํด์ผํ๋ค.
์ฝํ ์ธ ๊ฐ ์๋ ํ๊ทธ๋ ์ข ๋ฃ ํ๊ทธ๋ฅผ ์๋ตํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ก์ค์ ๊ธ๋ <hr>ํ๊ทธ๋ ์ฝํ ์ธ ๋ฅผ ์ ์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ <hr> ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ค.
1.3. HTML ๋ฌธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
<!DOCTYPE html> <!--ํ์ฌ ๋ฌธ์๊ฐ ์ด๋ค ๋ฒ์ ์ผ๋ก ์์ฑ๋๋์ง ํ์๋๋ ๊ณณ. ์ฌ๊ธฐ๋ html5-->
<html lang="en"> <!--html ํ๊ทธ, ํ์ฌ ์น ๋ฌธ์๊ฐ ์ด๋ค ์ธ์ด๋ก ์์ฑ๋๋์ง ์ฐ๋ ๊ณณ-->
<head> <!--head ํ๊ทธ. html ํ๊ทธ์ ์์ ํ๊ทธ. ๋ฌธ์ ๊ณต๊ฐ์ ํ์๋๋ ๊ณณ์ ์๋๋ค.-->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body> <!--#body ํ๊ทธ ๋ฌธ์ ๊ณต๊ฐ์ ํ์๋๋ ๊ณณ์ด๋ค-->
</body>
1.4. HTML ํ๊ทธ
1)Element
:<p>์ด ์ ์ฒด๊ฐ ์๋ฆฌ๋จผํธ</p>์ ๊ฐ์ด, ์์ํ๊ทธ์ ์ข ๋ฃํ๊ทธ๊น์ง ์ ๋ถ๋ฅผ ์๋ฆฌ๋จผํธ๋ผ๊ณ ํ๋ค. </br>์ ๋น์์(empty element)๋ผ๊ณ ํ๋ฉฐ <hr/>์ <img/>๋ฑ์ด ์๋ค.
2)ํ๊ทธ
: "<"์ ">"๋ก ๋ฌถ์ธ ์ผ๋ จ์ ๋ช ๋ น์ด๋ฅผ ํ๊ทธ๋ผ๊ณ ํ๋ค. ํ๊ทธ๋ ์์ํ๊ทธ, ์ข ๋ฃํ๊ทธ. ๋นํ๊ทธ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
3)form ํ๊ทธ
: ์ ๋ณด๋ฅผ ์ ์ถํ๊ธฐ ์ํ ๋ํํ ์ปจํธ๋กค์ ํฌํจํ๋ ๋ฌธ์ ๊ตฌํ์ ๋ํ๋ธ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ url์ ์ ๋ action์์ฑ, ์์์ ์ ์ถํ ๋ ์ฌ์ฉํ๋ method์์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
<form name="sform" action="https://search.naver.com/search.naver" method="get"">
<input name="query" type="text">
<input type="submit" value="๊ฒ์">
</form>
-> ์ ๋ ฅ์ฐฝ์ "[๊ฒ์์ด]"์ ๋ ฅ, "๊ฒ์" ๋ฒํผ์ ๋๋ฅด๋ฉด, ๋ธ๋ผ์ฐ์ ๋ <form>ํ๊ทธ์"action="https://search.naver.com/search.naver"์ ์ฐธ๊ณ ํ๊ณ , search.naver.com ์๋ฒ์ ์ ์ํ์ฌ search.naver ์์ฉํ๋ก๊ทธ๋จ์ ์คํ์ ์๊ตฌํด์ผ ํ๋ค๋ ๊ฒ์ ํ์ธํ๋ค.
->type ๋ถ๋ถ์ ํตํด, ์ฐ๊ฒฐ๋ ํ์ผ์ด CSSํ์ผ์์ ์ ์ ์๋ค
->rel์ ๋ถ๋ถ์ ํตํด, ์ฐ๊ฒฐ๋ ํ์ผ์ด ์คํ์ผ์ํธ์์ ๋ช ์ํ๋ค.
->href๋ฅผ ํตํด ์ฐ๊ฒฐํ CSS ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ค. mystyle.css ํ์ผ๊ณผ ์ฐ๊ฒฐํ๋ค.
4)link ํ๊ทธ
: ์ธ๋ถ์ ๋ฌธ์๋ฅผ ์ฐ๊ฒฐ์ํค๋ ํ๊ทธ์ด๋ค. <link> ํ๊ทธ๋ <head></head>์ฌ์ด์ ๋ฃ๋๋ค. HTML ํ์ด์ง์ ๋ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ธฐ ์ํ ํ๊ทธ์ด๋ค. ๋ฉ๋ค ๋ฐ์ดํฐ๋, ๋ฐ์ดํฐ๋ฅผ ์ค๋ช ํ๋ ๋ฐ์ดํฐ๋ก ์๋ฅผ ๋ค์ด, ์ฌ์ง์ ์ฐ์ ์ฅ์์ ์๊ฐ์ ์ฌ์ง ๋ฐ์ดํฐ์ ๋ฉํ๋ฐ์ดํฐ์ด๋ค.
5)script ํ๊ทธ
: <script> ํ๊ทธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๊ทธ๋ก, html ๋ฌธ์ ๋ด ๋๋ถ๋ถ์ ์์น์ ์ฝ์ ๊ฐ๋ฅํ๋ค.
6)input ํ๊ทธ
: <input>ํ๊ทธ๋ ํผ๋๊ทธ์ ์์๋ก, ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ๊ธฐ ์ํ ํ๊ทธ์ด๋ค.
<form action = "test.do" method = "get">
๊ฒ์๋ด์ฉ <input type="text" name = "query">
<input type="submit" value = "๊ฒ์">
->์ด๋ฐ ๋ฐฉ์์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ํ ์คํธ ๊ฐ์ ๋ฐ์ ์ ์๋ค.
2. css
2.1. css๋?
Cascading Style Sheets์ ์ฝ์ด๋ก, html ๋ฌธ์๋ฅผ ๊พธ๋ฐ๋ ์ฌ์ฉํ๋ ์คํ์ผ์ํธ ์ธ์ด์ด๋ค. CSS๋ HTML๋ก ๋ถํฐ ๋์์ธ์ ์ธ ์์๋ฅผ ๋ถ๋ฆฌํด ์ ์ํ ์ ์๋ค. ์ ์ ์๋ CSS๋ ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ์นํ์ด์ง์ ์ ์ฉํ ์ ์๋ค.
2.2. css ๊ธฐ๋ณธ ๋ฌธ๋ฒ
CSS๋ '์ ํ์(selector)'์ '์ ์ธ๋ถ(declaration)'๋ก ๊ตฌ์ฑ๋๋ค.
-์ ํ์: ์คํ์ผ์ ์ง์ ํ HTML์์(ํ๊ทธ, ์์ด๋ ๋ฑ)๋ฅผ ๊ฐ๋ฆฌํจ๋ค
-์ ์ธ๋ถ: ์ ์ธ๋ถ์๋ CSS์์ฑ ์ด๋ฆ๊ณผ ๊ฐ์ด ํฌํจ๋๋ค.
<CSS ๋ฌธ๋ฒ>
์ ํ์ {์์ฑ๋ช :์์ฑ๊ฐ; ์์ฑ๋ช :์์ฑ๊ฐ....}
<์์>
/* h1ํ๊ทธ์ ์์์ ๋นจ๊ฐ์์ผ๋ก ํฌ๊ธฐ๋ 15px๋ก ์ง์ ํฉ๋๋ค.*/
h1 {color:red;
font-size:15px;
}
-> ์ ํ์๋ ๋์์ธ์ ์ ์ฉํ๊ณ ์ํ๋ HTML ์์์ด๋ค. ๋ฐ๋ผ์ ์ ํ์ ์ ์๊ฐ ์ค์ํ๋ค.
-> ์ ์ธ๋ถ๋ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถ๋์ด์ง ๋ค์์ ํญ๋ณต์ ํฌํจํ๋ค. ๊ฐ ์ ์ธ์ ํญ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๋๋๋ฉฐ, ์ ์ธ ๋ธ๋ก์ ์ค๊ดํธ({})๋ก ๋ฌถ๋๋ค.
2.3. CSS ์ ์ฉ ๋ฐฉ๋ฒ
HTML ๋ฌธ์์ CSS๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ด๋ถ ์คํ์ผ์ํธ, ์ธ๋ถ ์คํ์ผ์ํธ, ์ธ๋ผ์ธ ์คํ์ผ์ํธ ๋ฑ ์ด 3๊ฐ์ง์ ๋ฐฉ๋ฒ์ด ์๋ค. ์คํ์ผ ์ํธ(stylesheet)๋ ์น ํ์ด์ง๋ ๋ฌธ์์ ๋ ์ด์์๊ณผ ๋์์ธ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋๋ CSS ๊ท์น ์งํฉ์ ์๋ฏธํ๋ค.
1) ๋ด๋ถ ์คํ์ผ์ํธ
htmlํ์ผ์ ์คํ์ผ์ ๊ธฐ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, <head></head> ํ๊ทธ ์์ <style></style>ํ๊ทธ ๋ถ๋ถ์ ์์ฑํ๋ค. html๊ณผ css๊ฐ ํ ํ์ผ์ ์์ผ๋ฏ๋ก ์์ ์ด ์ฝ๊ณ ๊ฐํธํ์ง๋ง css์ ์ฌํ์ฉ์ด ์ ๋๋ ๋ฌธ์ ๊ฐ ์์ด ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ธ๋ถ ์คํ์ผ์ํธ๊ฐ ๊ถ์ฅ๋๋ค.
<head>
<style>
body {
background-color: red;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
<body>
...
</body>
2) ์ธ๋ถ ์คํ์ผ ์ํธ
css๋ฅผ ์์ฑํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค. ๋ณ๋์ ํ์ผ์ css๋ฌธ์๋ฅผ ์์ฑํ๊ณ ํด๋น css๋ฅผ ํ์๋ก ํ๋ html๋ฌธ์์์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ํ์์ด๋ค. ์ด๋ css๋ ๋์ผํ ์๋ฒ์ ์์ด๋ ๋๊ณ , url์ ํตํด ๋ค๋ฅธ ์๋ฒ์ css๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>์ธ๋ถ ์คํ์ผ์ํธ</title>
<link rel="stylesheet" href="external.css" />
</head>
<body>
<h1>์ฝ๋ฉ</h1>
<p class="article">์ฐ๋ฆฌ๋ ์ฝ๋ฉ์ ๋ฐฐ์ฐ๊ณ ์์ด์!</p>
</body>
</html>
[์ธ๋ถ์ ์ ์ฅ๋external.css ์ฝ๋]
h1 {
color: pink;
}
.article {
border: 1px solid black;
padding: 30px;
}
3) ์ธ๋ผ์ธ ์คํ์ผ ์ํธ
html ํ๊ทธ์ ํ์ํ ๋์์ธ ์์ฑ์ ์ง์ ์์ฑํ๋ ํ์์ด๋ค. ๊ทธ๋ ๊ทธ๋ ํ์ํ ๋์์ธ์ ๋ฐ๋ก ์ ์ฉํ ์ ์๋ค๋ ํธ๋ฆฌํจ์ด ์์ง๋ง ์ผ๊ด๋ ๋์์ธ ์ฒด๊ณ๋ฅผ ์ ์งํ๋ ๋ฐ์๋ ๋ฐฉํด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ฌ์ฉํ์ง ์๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1 style="color: blue">์ ๋ชฉ</h1>
<div style="width: 100px; height: 1--px; border: 1px solid red">์๋
</div>
</body>
</html>
2.4. CSS ์ถ์ฒ ์ ์ฉ ์ฐ์ ์์
์ฌ์ฉ์ !important > ์ ์์ !important > ์ ์์ > ์ฌ์ฉ์ > ๋ธ๋ผ์ฐ์ . ์ด๋ ์ฃผ์ํด์ผ ํ๋ ๊ฒ์ important๋ฅผ ์ฌ์ฉํ ๋์ด๋ค. important๋ ํญํฌ(Cascading)์ ํ๋ฆ์ ๊นฐ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
์๋ฅผ ๋ค์ด, aํ๊ทธ๋ก '๋ค์ด๋ฒ'๋ผ๋ ๋ฌธ์์ด์ ์์ฑํ๋ฉด, ์นํ์ด์ง์์๋ ํ๋์ ๋ฐ์ค์ด ์ณ์ง ํํ๋ก ๋ํ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ๋ธ๋ผ์ฐ์ ์คํ์ผ์ด๋ค. ์ด๋ css๋ฅผ ์ฌ์ฉํด aํ๊ทธ๋ฅผ 'a{color: red; text-decoration:none;}'๋ก ๋ณ๊ฒฝํ๋ฉด ์นํ์ด์ง์ ๋นจ๊ฐ ๋ฐ์ค์ด ์๋ ํํ๋ก ๋ฐ๋์ด ๋ํ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ณด๋ค ์ฌ์ฉ์ ์ง์ ์ด ์ฐ์ ์์์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋๋ค.
HTML๋ฌธ์๋ ์ ์์ ์คํ์ผ์ ์ฐ์ ์ ์ฉํ๊ณ -> ๊ทธ ๋ค์ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์ ์คํ์ผ -> ๋ง์ง๋ง์ผ๋ก ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ์ฉํ๋ค. ๊ฐ๋จํ ๋งํ์๋ฉด, Cascadingdml ๋ป์ธ ํญํฌ์ ๊ฐ์ด ์คํ์ผ์ด ์ฐ์ ์์์ ๋ง๊ฒ ์ฐ์์ ์ผ๋ก ์ ์ฉ๋๋ค๋ ์๋ฏธ์ด๋ค.
3. JS(JavaScript)
3.1. JS๋?
HTML๊ณผ CSS๋ก ๊ตฌ์ฑ๋ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์ธ์ด. JS๋ฅผ ์ด์ฉํ๋ฉด ์น ํ์ด์ง๊ฐ ํน์ ์ํฉ(event)์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์๋ํ ์ ์๋๋ก ๋ง๋ค ์ ์๋ค.
JS์ ์์์ ์ ์ ์ธ ์น์ ๋์ ์ผ๋ก ํํํ๊ธฐ ์ํ๊ฒ ์ด์๋ค. ํ์ฌ๋ ์น ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๋ ๋ฐ์ชฝ์ง๋ฆฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋, ํ๋ก ํธ์๋ ์์ญ ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋ ์์ญ๊น์ง ์๋ฃจ๋ฅด๋ ์น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์ค์ผ๋ก ์๋ฆฌ์ก๊ณ ์๋ค.
๋ธ๋ผ์ฐ์ ์ ์์ญ์ด ์๋ ๋ฐฑ์๋ ์์ญ์ Java, Python ๊ทธ๋ฆฌ๊ณ JS(Node.JS)๋ฑ ์ฌ๋ฌ ์ธ์ด๋ก ๊ตฌ์ฑ๋ ์ ์์ง๋ง, ํ๋ก ํธ์๋ ์์ญ์ ์์์ ์ธ๊ธํ ์ธ ๊ฐ์ง ์ธ์ด๋ก ๊ตฌ์ฑ๋๋ค.
3.2. JS ํน์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฑ(Object) ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ์ด๋ฉฐ, ํ์ ์ ๋ช ์ํ ํ์๊ฐ ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค. ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ์งํฅํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ ํํํ ์ ์๋ค.
3.3. JS ๊ธฐ๋ณธ ๋ฌธ๋ฒ
3.3.1. ๋ณ์
๊ฐ๋จํ ๋น์ ์ ํจ๊ป ๋ณ์๋ฅผ ์ดํดํด๋ณด์. ํ ๋๋ถ๊ฐ ๋ฐญ์ ์ฌ์ ์จ์์ ์ฌ๋ฌ ์ข ๋ฅ ๊ตฌํด์๊ณ , ์จ์์ ๊ตฌ๋ถํ ๋ ํธ์๋ฅผ ์ํด ๋ฐ๊ตฌ๋ ์ฌ๋ฌ๊ฐ์ ์จ์์ ์ข ๋ฅ๋ณ๋ก ์ด๋ฆํ๋ฅผ ๋ถ์ฌ ๋๋ ๋ด์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์ด๋, ๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋ฐ๊ตฌ๋, ๋ฐ๊ตฌ๋์ ์ด๋ฆํ๋ฅผ ๋ฌ์ ์ฃผ๋ ๊ฒ์ ๋ณ์์ ์ ์ธ, ๋ฐ๊ตฌ๋์ ๋ฌผ๊ฑด์ ๋ด๋ ๊ฒ์ ํ ๋น์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์๋ฅผ๋ค์ด, ๋ฐ๊ตฌ๋์ ๋น๊ทผ์ด๋ผ๋ ์ด๋ฆํ๋ฅผ ๋ถ์ด๊ณ ๋น๊ทผ ์จ์์ ๋ด๋ ๊ฒ์, ๋น๊ทผ์ด๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด ๋ณ์์ ๋น๊ทผ ์จ์์ ํ ๋นํ ๊ฒ๊ณผ ๊ฐ๋ค.
JS๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
let [๋ณ์์ด๋ฆ] = [ํ ๋นํ ๊ฐ];
-> let์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ ๋ช ์ ์ ํ๋ค.
-> ํ ๋น ์ฐ์ฐ์(=)์ ์ฐ๊ณ ํด๋น ๋ณ์์ ํ ๋นํ ๊ฐ์ ์ ๋๋ค
3.3.2. ๋ณ์๋ช ์ ์ธ ๋ฐฉ๋ฒ
-์ค๋ค์ดํฌ ์ผ์ด์ค(snake_case): ์ธ๋๋ฐ๋ฅผ ๋ฃ์ด ๊ตฌ๋ถํ๋ค
-ํ์ค์นผ ์ผ์ด์ค(PascalCase): ๋ชจ๋ ๋จ์ด๋ฅผ ๋๋ฌธ์๋ก ์์ํด ๊ตฌ๋ถํ๋ค
-์นด๋ฉ ์ผ์ด์ค(camelCase): ๋ ๋ฒ์งธ ๋จ์ด๋ถํฐ ๋๋ฌธ์๋ก ์์ํด ๊ตฌ๋ถํ๋ค
์ผ๋ฐ์ ์ผ๋ก, Jacascript์์ ์์ด๋ก ๋ณ์๋ช /ํจ์๋ช ์ ์์ฑํ ๋๋ camelCase๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ด๋ก์ด๋ค.
3.3.3. ํจ์
ํจ์๋ ์ ๋ ฅ์ ๋ฐ๋ผ ๊ทธ์ ๊ฑธ๋ง๋ ์์ ์ ํ๋ ํ๋์ ๋จ์์ด๋ค. ํจ์๋ฅผ ํํํ ๋๋ ํฌ๊ฒ ํํ์๊ณผ ์ ์ธ์์ผ๋ก ๋๋ ์ ์๋ค.
-์ ์ธ์: function keyword๋ฅผ ์ ๋๋ก ํจ์๋ฅผ ์์ฑํ๋ค
-ํํ์: ๋ณ์์ ํ ๋นํ๋ ๊ฒ์ฒ๋ผ, ํจ์ ์ด๋ฆ์ ๋ณ์์ ํ ๋นํ๊ณ ํจ์๋ฅผ ์์ฑํ๋ค. ์, let name = function(parameter){...}
3.3.4. ํจ์์ ๊ตฌ์กฐ
function name(parameter) {}
->function ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๋ง๋ ๋ค
->name: ํจ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ ์ด๋ฆ
->parameter(๋งค๊ฐ๋ณ์): ํจ์์ ํ์ํ ๋ณ์๊ฐ ์๋ค๋ฉด ์ฌ๊ธฐ์ ๋ฃ๋๋ค
->body: ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํํ ์ฝ๋๊ฐ ๋ค์ด์๋ ๊ณณ
๊ทธ๋ฆฌ๊ณ ํจ์๋ฅผ ๋ง๋ค ๋, ํจ์ ์์ return ํค์๋๊ฐ ์์ด์ผ ๊ฐ์ด ๋ฐํ๋๋ค. ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด ๊ผญ ํจ์ ์์ return ํค์๋๋ฅผ ์์ฑํ์.
3.4. var, let, const ์ฐจ์ด์
JavaScript์์ ์ฌ์ฉ๋๋ ๋ณ์ ์ ์ธ ๋ฐฉ์์๋ ์ธ๊ฐ์ง๊ฐ ์๋ค. var, let, const์ด๋ค. var์ ๋น๊ต์ ์ค๋์ ๋ถํฐ ์ฌ์ฉ๋์ด ์์ง๋ง, ํ์ฌ๋ ์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ์ ์ธ์์ด๊ณ , ์ฃผ๋ก let๊ณผ cont๊ฐ ์ฌ์ฉ๋๋ค.
3.4.1. ์ค๋ณต ์ ์ธ๊ณผ ์ฌํ ๋น
var์ ์ค๋ณต ์ ์ธ๊ณผ ์ฌํ ๋น ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
var a =5;
console.log(a) //5
var a =10;
console.log(a) //10
let์ ์ค๋ณต ์ ์ธ์ ํ์ฉํ์ง์๊ณ , ์ฌํ ๋น์ ๊ฐ๋ฅํ๋ค.
//์ค๋ณต ์ ์ธ์ ๋ถ๊ฐ๋ฅํ๋ค
let a =5;
let a=10;
cnosole.log(a); // SyntaxError: Identifier 'a' has already been declared
//์ฌํ ๋น์ ๊ฐ๋ฅํ๋ค
let a =5;
console.log(a); //5
a= 10;
console.log(a); //10
cont๋ ์ค๋ณต ์ ์ธ์ ํ์ฉํ์ง ์๊ณ , ์ฌํ ๋น๋ ๋ถ๊ฐ๋ฅํ๋ค. ์๋๋ฉด const๋ ์์๋ฅผ ์ ์ธํ๋ ํค์๋์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์์๋, ํ๋ฒ ๊ฐ์ด ์ ํด์ง๋ฉด ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋ณ๊ฒฝ๋์ง ์๋ ๊ฐ์ด๋ค.
//์ค๋ณต ์ ์ธ์ ํ์ฉ๋์ง ์๋๋ค
const a = 5;
const a = 10;
cnosole.log(a); // SyntaxError: Identifier 'a' has already been declared
//์ฌํ ๋น๋ ๋ถ๊ฐ๋ฅํ๋ค
const a = 5;
console.log(a); // 5
a = 10;
console.log(a); // TypeError: Assignment to constant variable.
3.4.2. ์ค์ฝํ ๋ฒ์
var์ ํจ์ ๋จ์ ์ค์ฝํ(function-level scope)์ด๋ค. var ๋ณ์๊ฐ ์ ์ธ๋ ํจ์ ๋ด๋ถ์ ์ด๋์๋ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์ธ๋ถ๋ก๋ ์ฐธ์กฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๋ํ ํจ์ ๋ด๋ถ์์ ์ ์ธ๋ var์ ์ง์ญ๋ณ์๋ก ๊ฐ์ฃผํ์ง๋ง, ํจ์ ์ธ๋ถ์์ var๊ฐ ์ ์ธ๋์๋ค๋ฉด ์ ์ญ๋ณ์๋ก ๊ฐ์ฃผํ๋ค.
function hello(){
var a = 10;
console.log(a);
}
hello(); // 10
console.log(a); //ReferenceError: a is not defined
let๊ณผ const๋ ๋ธ๋ก ๋จ์ ์ค์ฝํ(block-level scope)์ด๋ค. { } ๋ธ๋ก ๋ด๋ถ์์ ์ ์ธ๋ let, const ๋ณ์๋ ์ธ๋ถ์์ ์ฐธ์กฐ๋์ง ์๋๋ค.
function hello() {
let a = 5;
console.log(a); // 5
}
console.log(a); // ReferenceError: a is not defined
3.4.3. ํธ์ด์คํ
JS์์ ํธ์ด์คํ (hoisting)์ด๋, ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋จ์ํ๊ฒ ์ค๋ช ํ์๋ฉด, ๋จ์ด ๋ป ์ฒ๋ผ ์คํฌ๋ฆฝํธ ๋ด ๋ณ์์ ํจ์์ ์ ์ธ ์์์ ์๊ด ์์ด ์์๊ฐ ๋์ด์ฌ๋ ค์ง ๋ฏํ ํ์์ด๋ค. ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ๊ฒ์ด ์๋๋ผ JS ์์ง์ด ๋จผ์ ์ ์ฒด ์ฝ๋๋ฅผ ํ ๋ฒ ์ค์บํ๊ณ ์คํ์ปจํ ์คํธ์ ๋ฏธ๋ฆฌ ๊ธฐ๋กํด ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ํ์์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
var์ ํธ์ด์คํ ์ด ๋ฐ์ํ๋ค. ๋ค์ ์ ์ธ๋ ๋ณ์ a๊ฐ ์์ ์ฐธ์กฐ๋์์์๋ error๊ฐ ์๋ undefined๊ฐ ํธ์ถ๋๋ค.
console.log(a); // undefined :: ๋ณ์ ์ ์ธ ์ด์ ์ ๋ณ์ ์ฐธ์กฐ ๊ฐ๋ฅ
var a // ์ด๊ธฐํ
console.log(a); // undefined
a = 10 // ํ ๋น
console.log(a); // 10
let๊ณผ const๋ ํธ์ด์คํ ์ด ๋ฐ์ํ์ง๋ง, ๋ค๋ฅด๊ฒ ์๋ํ๋ค.
console.log(a); // ReferenceError :: ๋ณ์ ์ ์ธ ์ด์ ์ ๋ณ์ ์ฐธ์กฐ ๋ถ๊ฐ๋ฅ
let a // ์ด๊ธฐํ
console.log(a); // undefined
a = 10 // ํ ๋น
consloe.log(a); // 10
-> l et๊ณผ const๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒฝ์ฐ์๋, ๋ณ์์ ์ ์ธ๊ณผ ์ด๊ธฐํ ์ฌ์ด์ ์ผ์์ ์ผ๋ก ๋ณ์๊ฐ์ ์ฐธ์กฐํ ์ ์๋ ๊ตฌ๊ฐ์ธ TDZ(Temporal Dead Zone)๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ด์ง๋ ํ์์ด๋ค. ํธ์ด์คํ ์ ๋ฐ์ํ์ง๋ง, ๊ฐ์ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
4. DB/SQL/MYSQL
4.1. ๊ธฐ์ด
๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ผ์ํํ์ ๋๋ถ๋ถ์ ์ ๋ณด๊ฐ ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋ฉ๋๋ค.
DBMS๋ DB์ ์ํํธ์จ์ด๋ก, ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ์ด์ํ๋ค. DBMS๋ "๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ ์ฅ, ๊ด๋ฆฌ ํ ์ ์์ด์ผ ํ๋ค" ๊ทธ๋ฆฌ๊ณ "๊ณต์ ๊ฐ๋ ์ผ๋ก, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๊ณต์ ํ ์ ์๋ค."๋ ํต์ฌ ๊ฐ๋ ์ ๊ฐ์ง๋ค.
DBMS์ ์ข ๋ฅ์๋ MYSQL์ด ํฌํจ๋๋ค. ์ด์ธ์๋ ๋ง๋ค. DBMS๋ ๊ณ์ธตํ, ๋งํ, ๊ด๊ณํ, ๊ฐ์ฒด์งํฅํ, ๊ฐ์ฒด๊ด๊ณํ ๋ฑ ๋ค์ํ ์ ํ์ด ์์ง๋ง ํธ์ฌ๋ ๊ด๊ณํ DBMS๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋, ๋ฐ์ดํฐ ํญ๋ชฉ ๊ฐ์ ์ฌ์ ์ ์๋ ๊ด๊ณ๊ฐ ์์ ๋ ๋ฐ์ดํฐ ํญ๋ชฉ๋ค์ ๋ชจ์์ ๊ฐ๋ฆฌํจ๋ค. ์ด ํญ๋ชฉ๋ค์ ์ด๊ณผ ํ์ผ๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ ์ด๋ธ์ ๊ฐ ํ์ ๊ธฐ๋ณธํค๋ผ๊ณ ๋ถ๋ฅด๋ ๊ณ ์ ์๋ณ์๋ก ํ์ํ ์ ์๊ณ ์ฌ๋ฌ ํ ์ด๋ธ์ ์๋ ํ๋ค์ ์ธ๋ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธ ์ฐ๊ฒฐํ ์ ์๋ค.
4.2. SQL์ด๋?
SQL(Structured Query Language)๋ DBMS์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ถ, ๊ด๋ฆฌํ๊ณ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด์ด๋ค. ๊ฐ๋จํ ๋งํด์ SQL์ DB์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. MySQL, Oracle, MariaDB๋ฑ์ด ์๋ค. SQL์ ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด์ด๋ฉฐ, DB์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ฝ์ ํ ์ ์๋ค. ์ฟผ๋ฆฌ(query)๋, ์ง์๋ฌธ์ ์๋ฏธํ๋ค. SQL์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๊ณ ์ ๋์ด์์ด์ผ ํ๋ค.
4.3. SQL ๋ฌธ๋ฒ ์ข ๋ฅ
1) DML(Data Manipulation Language) ๋ฐ์ดํฐ ์กฐ์์ด
-SELECT: ํ ์ด๋ธ์์ ์ํ๋ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ด๋ค. ํ ์ด๋ธ์ ์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค
SELECT col1, col2, ....
FROM table_name;
-DISTANCE: ์ค๋ณต์ ๋ฐฐ์ ํ๊ณ ๊ณ ์ ๊ฐ๋ง์ ์ถ๋ ฅํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค. SELECT์ ๊ฐ์ด ์ฌ์ฉ๋๋ค.
SELECT DISTINCT col1, col2, ...
FROM table_name;
-DELET: ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค
-INSERT: ์ ๊ท ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ๋ ์ฌ์ฉํ๋ค
-UPDATE: ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์ฌ์ฉํ๋ค
2) DDL(Data Definition Language) ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑ
-CREATE: DB ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ค
-DROP: DB ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค
-ALTER: ๊ธฐ์กด์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค.
3) DCL (Data Control Language) ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฌธ
-GRANT: ๊ฐ์ฒด์ ๊ถํ์ ๋ถ์ฌํ ๋ ์ฌ์ฉํ๋ค
-REVOKE: ๊ฐ์ฒด์ ๋ถ์ฌ๋ ๊ถํ์ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค
4)TCL: ์ฃผ๋ก ํธ๋์ญ์ ์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ
-ํธ๋์ ์ : ํ๊บผ๋ฒ์ ์ํ๋์ด์ผ ํ ์ฐ์ฐ์ ๋ชจ์๋์ ๊ฒ
-COMMIT: ํ์ฌ ํธ๋์ ์ ์์ ์ํํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๊ณ , DB์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ํ ๋ ์ฌ์ฉํ๋ค
-ROLLBACK: ํธ๋์ ์ ์ค ๋ฐ์ํ ์ค๋ฅ๋ ์๋ํ์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ ค, DB๋ฅผ ์ด์ ์ํ๋ก ๋ณต๊ตฌํ ๋ ์ฌ์ฉํ๋ค
-SAVEPOINT: ํธ๋์ ์ ๋ด์์ ํน์ ์์ ์ ์ ์ฅ์ ์ ์ค์ ํ์ฌ ํ์ํ ๊ฒฝ์ฐ ํด๋น ์์ ์ผ๋ก ๋๋๋ฆด ์ ์๋ค
-SET TRANSACTION: ํธ๋์ ์ ์ ์์ฑ์ ์ค์ ํ๋ค. ์๋ฅผ ๋ค์ด, ๊ฒฉ๋ฆฌ ์์ค์ ์ค์ ํ ๋ ์ฌ์ฉํ๋ค.
4.4. MySQL์ด๋?
MySQL์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์คํ ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋ค. ๋ค์ค ์ค๋ ๋ ๋ค์ค ์ฌ์ฉ์ ํ์์ ๊ตฌ์กฐ์ง์์ด ํ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋ค.
-MySQL ํน์ง
<์ฅ์ >
-๋ค์ํ ์ด์์ฒด์ ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ง์ ํ๋ก๊ทธ๋จ์ ์ธ์ด๋ฅผ ์ง์ํ๋ค
-ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ ์งํฉ๋ ์์ฃผ ๋น ๋ฅด๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
-๋๋ฆฌ ์๋ ค์ง SQL ํ์์ ์ฌ์ฉํ๋ค
-MySQL ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์์ ์ฉ๋์ ๋ง๊ฒ ์์ ํ ์ ์๋ค.
-๋ค์ํ ์คํ ๋ฆฌ์ง ์์ง์ ๊ฐ์ง๊ณ ์๊ณ , ๋ฐ์ดํฐ ๋ณต์ ๋ํ ๊ฐ๋ฅํ๋ค
<๋จ์ >
-ํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ฉํ๊ธฐ ์ด๋ ต๋ค.
-๊ฒ์ ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๊ธฐ๊ฐ ์๋ค.
5. FLASK
5.1. Django๋?
์ฅ๊ณ ๋ ํ์ด์ฌ ์น ํ๋ ์์ํฌ ์ค์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ด๋ค. ์ผ๋ฐ์ ์ธ ์น ๊ฐ๋ฐ์ ๊ฑฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํ ๊ฐ๋ ฅํ ๋ด์ฅ ์๋ฃจ์ ์ ์ ๊ณตํด, ์ฝ๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์์ฑํ๊ณ ํ๋ก์ ํธ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ์ ์๋ค.
ํ๋ ์์ํฌ๋, ์น ๊ฐ๋ฐ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ชจ๋์ ๋ชจ์์ ์๋ฏธํ๋ค. ์ฌ๋ฌ ๋ชจ๋์ด ๊ทธ๋ฃนํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฑ์ด๋ ์น์ฌ์ดํธ๋ฅผ ์๋ก ๋ง๋๋ ๊ณผ์ ์ด ๋งค์ฐ ์ฌ์์ง๋ค.
5.2. Django์ ํน์ง
-๋ง์ ํ๋ ์์ํฌ ๋๋ถ์ ๊ฐ๋ฐ์๋ ๋จ์ ์์ ์ ์์๋๋ ์๊ฐ์ ์ค์ด๊ณ ์น์ฌ์ดํธ์ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ๋ง๋๋๋ฐ ๋ ์ง์คํ ์ ์๋ค. ์ด๋ ๋น ๋ฅธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค
-์ฅ๊ณ ๋ ๋์ ๋ณด์์ฑ์ ์ ๊ณตํ๋ค
-์ฅ๊ณ ๋ ๋ค์ํ ์์ญ์์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ค์ฉ๋ ํ๋ ์์ํฌ์ด๋ค. ๋ถํ๊ฐ ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ธกํ๋ , ๊ฐ๋จํ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ชจ๋ ๊ท๋ชจ์ ์ฉ๋์ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ๋๋ฐ ํ๋ฅญํ๊ฒ ์๋ํ๋ค.
5.3. FLASK๋?
ํ๋ผ์คํฌ๋ Python์ ๋ง์ดํฌ๋ก ์น ํ๋ ์์ํฌ์ด๋ค. ๋ค์ํ ์น ์์ง๊ณผ ๋ถ์ฌ์ ์ธ ์ ์๊ณ , ๋ ๊ฐ๋ณ๊ธฐ๋ ํด์ Django๊ณผ ๊ฐ์ด ์ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ฝ๋๋ ๋น๊ต์ ๋จ์ํ๊ณ ํนํ API ์๋ฒ๋ฅผ ๋ง๋ค๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํ๋ค. ๊ด๋ จ๋ ํ์ฅ ๊ธฐ๋ฅ๋ค์ด ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. FLASK๋ Pythone์ผ๋ก๋ง ์์ฑํ๋ฉด ์ฌ์ฌํ ์ฝ๋๋ฅผ ์น ์๋ฒ์ HTML, CSS๋ฅผ ํจ๊ป ์ฌ์ฉํด ์น ์ฌ์ดํธ๋ฅผ ๊ฐ๋จํ๊ฒ ์ ์ํ ์ ์๋ค.
5.4. FLASK์ ํน์ง
-FLASK๋ ๊ฐ๋ณ๊ณ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๊ฒ ์ค๊ณ๋์๋ค. ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ๊ฐ์ถ๊ณ ์์ด ๊ฐ๋ฐ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ๋น ๋ฅด๊ฒ ์์ํ ์ ์๋ค.
-๋ผ์ฐํ ๋ฐ URL ๋งคํ: ํ๋ผ์คํฌ๋ URL์ ํ์ด์ฌ ์ฝ๋์ ํจ์๋ ๋ฉ์๋์ ๋งคํํ ์ ์๋ ๋ผ์ฐํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ URL๊ณผ HTTP ๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ฒญ์ ๋ฐ๋ผ ์ ์ ํ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ๋์์ด ๋๋ค.
-ํ์ฅ์ฑ: ํ๋ผ์คํฌ๋ ๊ฐ๋ฐ์๊ฐ ํ์ฅ์ ํตํด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ๋ชจ๋์ ์ค๊ณ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ. ์ฌ์ฉ์ ์ธ์ฆ, ์บ์ฑ ๋ฑ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ถํ ํ๋ผ์คํฌ ํ์ฅ ํ๋ก๊ทธ๋จ ์์ฝ์์คํ ์ ๊ฐ์ง๋ค.