๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

728x90

๋ฉ€ํ‹ฐ์บ ํผ์Šค

2/17 ๋ชฉ ๋ชฉ์š”์ผ! ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ, ์ˆ˜์ •, ์‚ญ์ œ, ์ข‹์•„์š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ์—ฌํƒœ ๋ฐฐ์šด ๊ฒƒ์„ ์‘์šฉํ•ด ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์–ด๋ ต๋‹ค์•„์•„์•„์•„! ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋ง๊ณ ๋Š” ๊ฐ์ด ์•ˆ ์žกํ˜€.. 1. HTML ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์–‘์‹(์ž…๋ ฅ Form)์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Django๊ฐ€ ์ œ๊ณตํ•˜๋Š” Model Form(class)๋ฅผ ์ด์šฉํ•จ bbs App ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— forms.py ์ƒ์„ฑํ•˜๊ณ  Django์—์„œ forms ๋ชจ๋“ˆ, bbs.models์—์„œ class๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„ form์— ๋Œ€ํ•œ class ์ •์˜ํ•จ โ†“forms.pyโ†“ from django import forms from bbs.models import Board class BoardForm(forms.ModelForm): class Meta: model =.. ๋”๋ณด๊ธฐ
2/16 ์ˆ˜ ์ˆ˜์š”์ผ! ์˜ค๋Š˜์€ Django๋กœ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ ๋‹ค. 1. ๋ฃจํŠธ ๋””ํ…ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— ํ…œํ”Œ๋ฆฟ์„ ๋ชจ์•„ ์ €์žฅํ•  ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , settings.py ํŒŒ์ผ์—์„œ os ๋ชจ๋“ˆ(๊ฒฝ๋กœ์™€ ํŒŒ์ผ๋ช…์„ ํ•ฉ์นจ)์„ import ํ•œ ํ›„์— ํ…œํ”Œ๋ฆฟ ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•จ os.path.join(๊ฒฝ๋กœ, 'ํŒŒ์ผ๋ช…') โ†’ C:/python-django/LectureSampleProject_0216/template ํŒŒ์ผ๋“ค 2. Static files(CSS, JS, images)์€ client์˜ request URL์—์„œ ๋‚˜์˜ค๋Š” ํ˜•ํƒœ์ด๋ฏ€๋กœ, ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— static ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  settings.py ํŒŒ์ผ์—์„œ static ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•จ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— media ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  Media ํŒŒ์ผ(client๊ฐ€ server์—.. ๋”๋ณด๊ธฐ
2/15 ํ™” ํ™”์š”์ผ! PyCharm์œผ๋กœ ์ง€๋‚œ๋ฒˆ์— ํ–ˆ๋˜ Project(MyFirstWeb_0215) ์ƒ์„ฑ, Django ์„ค์น˜ ๋ฐ MySQL ์—ฐ๋™์„ ๋˜‘๊ฐ™์ด ์ง„ํ–‰ํ–ˆ๋‹ค. 1. ์˜ค๋Š˜์€ templates ํด๋” ์•ˆ์— ์ถ”๊ฐ€๋กœ polls ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  index.html ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์คŒ 2. HttpResponse ์•ˆ์— ์งˆ๋ฌธ์„ ํด๋ฆญํ•˜๋ฉด question.id๊ฐ€ ์—ฐ๊ฒฐ๋˜๋„๋ก link ์†์„ฑ ์ง€์ •ํ•˜๊ธฐ 3. urls.py(polls URLConf) ํŒŒ์ผ์—์„œ question_id์— ๋Œ€ํ•œ URLConf์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•จ 4. polls App์— ํ•ด๋‹น๋˜๋Š” URL๋กœ ์ง„์ž…(request)ํ•˜๋ฉด view๋กœ detailํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฏ€๋กœ ์ด๋ฅผ ์ •์˜ํ•ด์•ผ ํ•จ 5. templates/polls ํด๋” ์•ˆ์— detail๋ผ๋Š” HTML ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์คŒ 6. polls.. ๋”๋ณด๊ธฐ
2/14 ์›” ์›”์š”์ผ! ๐Ÿฑโ€๐Ÿ‰ ์ง€๋‚œ ๊ธˆ์š”์ผ์— ์ด์–ด PyCharm๊ณผ MySQL์„ ์ด์šฉํ•ด Django๋ฅผ ๋ฐฐ์šด๋‹ค! PyCharm์œผ๋กœ ์ง€๋‚œ๋ฒˆ์— ํ–ˆ๋˜ Project(MyFirstWeb_0214) ์ƒ์„ฑ, Django ์„ค์น˜ ๋ฐ MySQL ์—ฐ๋™์„ ๋˜‘๊ฐ™์ด ์ง„ํ–‰ํ–ˆ๋‹ค. 1. MySQL๋กœ DB Table์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, PyCharm์—์„œ Python ๋ชจ๋“ˆ ์ค‘ models๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ class๋ฅผ ๋งŒ๋“ฆ polls ํด๋”์˜ models.py ํŒŒ์ผ ์•ˆ์— class๋กœ DB Table ๋ช…์„ธ๋ฅผ ์„ค์ •ํ•จ. model class๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ model.Model์„ ์ƒ์†ํ•ด์•ผ ํ•จ. PK(Primary Key)๊ฐ€ ์ž๋™์œผ๋กœ ํ•˜๋‚˜ ์„ค์ •๋จ from django.db import models class Question(models.Model): # id = .. ๋”๋ณด๊ธฐ
2/11 ๊ธˆ ๐Ÿ˜Ž ์ด์•ผ์•„์•„์•„ ๋ถˆ๊ธˆ!! ๐Ÿ˜Ž ํ”„๋ŸฐํŠธ์—”๋“œ ๋๋‚ด๊ณ , ๋ฐฑ์—”๋“œ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. Python์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ Web Application Framework, Django! WSGI(Web Server Gateway Interface) : Web์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ ํ˜ธ์ถœ์„ Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต๋ฐ›๊ธฐ ์œ„ํ•œ ํ˜ธ์ถœ ์กฐ์•ฝ(Calling Convention) Private Physical Server ์œ„์˜ ๋…น์ƒ‰ ์„ ์œผ๋กœ ๊ทธ๋ ค์ง„ ๋ชจ๋“  ๊ฒƒ๋“ค์„ ํ•ฉ์ณ์„œ WAS(Web Application Server)๋ผ๊ณ  ๋ถ€๋ฆ„ Application์„ ๋‹ด์„ Web Server๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์›€ ๊ทธ๋ฆฌ๊ณ  ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ WSGI module๊ณผ WSGI Process๋ฅผ ํ•ฉ์ณ์„œ WSGI middleware๋ผ๊ณ  ๋ถ€๋ฆ„ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ.. ๋”๋ณด๊ธฐ
2/10 ๋ชฉ ๋ชฉ์š”์ผ~~ ์ง€๋‚œ ์ˆ˜์—… ๋•Œ ํ•˜๋˜ ์ผ๋ณ„ ๋ฐ•์Šค์˜คํ”ผ์Šค API ์„œ๋น„์Šค๋ฅผ ๋” ๋ฐฐ์šด๋‹ค. AJAX์˜ async: true ๋น„๋™๊ธฐ(๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋‹ค๋ฅธ ์ž‘์—… ์‹คํ–‰. default) ํ˜น์€ ๋™๊ธฐ(false. ์ˆœ์ฐจ์ ) ํ˜ธ์ถœ์„ ์ง€์ •ํ•จ ์›น๋””์ž์ธ๊นŒ์ง€ ์‹ ๊ฒฝ ์“ธ ์—ฌ์œ ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์—, Bootstrap Examples์—์„œ ํŽ˜์ด์Šค ์†Œ์Šค(HTML)์™€ css ํŒŒ์ผ์„ WebStorm์œผ๋กœ ๊ฐ€์ ธ์™€์„œ ํ™œ์šฉํ•œ๋‹ค! HTML์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ผ์ธ๋“ค ์ง€์šฐ๊ณ  jQuery CND, jQuery ํŒŒ์ผ, CSS ํŒŒ์ผ ์—ฐ๋™์‹œํ‚ด input type="date"๋กœ ๋‹ฌ๋ ฅ์„ ๋„ฃ์–ด ์ผ๋ณ„ ๋ฐ•์Šค์˜คํ”ผ์Šค ์ˆœ์œ„๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„ฃ๊ณ , Delegation Model(JS Event ์ฒ˜๋ฆฌ ๋ฐฉ์‹)๋กœ Event๊ฐ€ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก 'onclick' Event Attribut.. ๋”๋ณด๊ธฐ
2/9 ์ˆ˜ GitHub ํŠน๊ฐ• ๋‘˜์งธ ๋‚ ! ์˜ค์ „์—๋Š” ๊ฒฝํ–ฅ ํŒŒ์•…๊ณผ rebase๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ค์Šต ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ์‘์šฉํ–ˆ๊ณ , ์˜คํ›„์—๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ(3์ธ 1์กฐ)๋กœ fork, clone, commit, push, pull-request, merge ์ผ๋ จ์˜ ๊ณผ์ •์„ ํ˜‘์—…ํ–ˆ๋‹ค! ๊ฐ์ž ์ดํ•ด๋„์™€ ํ™˜๊ฒฝ์„ค์ •์ด ๋‹ค๋ฅด๋‹ค ๋ณด๋‹ˆ ์˜ค๋ฅ˜, ์˜คํƒ€, ๊ฒฝ๋กœ ์žก๋Š”๋ฐ๋งŒ ์‹œ๊ฐ„์ด ์—„์ฒญ ๊ฑธ๋ ธ๋‹ค.. ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•ด์•ผ ๋Œ€์‘ํ•˜๊ณ , ์‘์šฉ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ๋А๊ผˆ๋‹ค. ๋‹ค๋“ค ์–ด๋ ค์›Œํ•œ๋‹ค. ๊ธฐ์ฃฝ์ง€ ๋ง์ž! rewind : commit์„ ๊ณผ๊ฑฐ ์‹œ์ ์œผ๋กœ ๋˜๊ฐ๊ธฐ. ์›๋ณตํ•œ ๋‚ด์šฉ ์ดํ›„์˜ ์ตœ๊ทผ ๊ฒƒ์€ .git์— ์ž„์‹œ ์ €์žฅ๋จ. rewind ๊ตฌ๊ฐ„์€ ์ค‘๋ณต ์ƒ์„ฑ ๊ฐ€๋Šฅ rebase ํ•œ ๋‚ด์šฉ๊ณผ rewind ํ•œ ๋‚ด์šฉ์— ๋™์ผํ•œ ๋ถ€๋ถ„ commit์ด ์žˆ๋‹ค๋ฉด ์ถฉ๋Œ(conflict)์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ cd /w.. ๋”๋ณด๊ธฐ
2/8 ํ™” ์˜ค๋Š˜์€ ํ™”, ์ˆ˜์š”์ผ ์ดํ‹€์— ๊ฑธ์ณ ์†กํƒœ์›… ๊ฐ•์‚ฌ๋‹˜์˜ GitHub ํŠน๊ฐ•์ด ์žˆ๋Š” ๋‚ ์ด๋‹ค~ GitHubยทgoorm ํšŒ์› ๊ฐ€์ž…ํ•˜๊ณ  goorm IDE์— ๋ฆฌ๋ˆ…์Šค(์ปจํ…Œ์ด๋„ˆ) ๊ฐœ๋ฐœํ™˜๊ฒฝ ์ถ”๊ฐ€. SW stack์€ Pytorch 1. fork ํ”„๋กœ์ ํŠธ ๋ณต์‚ฌ 2. clone ์†Œ์Šค์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ 3. ํ”„๋กœ์ ํŠธ ๋ถ„์„ยท๊ฒฝํ–ฅ ํŒŒ์•… 4. commit ์ฝ”๋“œ ์ˆ˜์ • ์ž‘์—… 5. push ์ž‘์—… commit ์—…๋กœ๋“œ (fork ํ”„๋กœ์ ํŠธ O / ํŒ€ ํ”„๋กœ์ ํŠธ X) 6. Pull-Request ๋‚˜์˜ ์ž‘์—…(commit) ์ œ์ถœ commit : commit message(์ฝ”๋ฉ˜ํŠธ. ์ˆ˜์ •ํ•œ ์ด์œ ) + diff(์†Œ์Šค ํŒŒ์ผ์˜ ๋ณ€ํ™”๋ถ„) Merge commit : ๋ณ‘ํ•ฉ ์ปค๋ฐ‹. ์ˆ˜์ • ๋‚ด์—ญ(diff)์€ ์—†์Œ. ๋นˆ ๊นกํ†ต ์ปค๋ฐ‹ pwd : print working directory.. ๋”๋ณด๊ธฐ

728x90