TIL_221110 ๐Ÿšฉclient - server - db ๊ตฌ์กฐ์™€ ๋™์ž‘ ์›๋ฆฌ ํŠน๊ฐ•

์ •์œค์ˆ™ยท2022๋…„ 11์›” 10์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/192
post-thumbnail

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 4๊ธฐ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ React B๋ฐ˜


๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. ๋‘๋ชฉ๋‹˜ ์›น๊ฐœ๋ฐœ ํŠน๊ฐ•
<client - server - db ๊ตฌ์กฐ์™€ ๋™์ž‘ ์›๋ฆฌ>

  • ์ปดํ“จํ„ฐ = ์›น์„œ๋ฒ„ / ๋‚ด ์ปดํ“จํ„ฐ = localhost = 127.0.0.1
    ์š”์ฒญ, ์‘๋‹ต ์ •๋ฆฌ

  • id,pw๋ฅผ url์— ๋‹ด์•„์„œ post ๋ฐฉ์‹์œผ๋กœ server์— ๋ณด๋‚ธ๋‹ค.
    -> server์—์„œ๋Š” ์ž…๋ ฅ๊ฐ’์„ ํ™•์ธ
    -> ํ•ด๋‹น ํšŒ์› ์œ ๋ฌด์— ๋”ฐ๋ฅธ ์‘๋‹ต ๊ฐ’์„ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ด์ค€๋‹ค.
    -> ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค๋ฉด ๋กœ๊ทธ์ธ ๋œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋‹ˆ๊นŒ rendering๋„ ๊ฐ™์ด ํ•ด์„œ ๋ณด๋‚ธ๋‹ค.

    • render: ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ

โ‘  flask๋กœ๋ถ€ํ„ฐ render template ๋“ฑ์„ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋”ฐ๋กœ render~ ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์ œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ
โ‘ก @app.route(๊ฒฝ๋กœ) - ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์–ด๋””๋กœ ๊ฐ€๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ. ๊ณ ๊ฐ์ด ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ๋กœ๋ฅผ ('/์—ฌ๊ธฐ') ์—ฌ๊ธฐ์— ๋„ฃ์Œ.
โ‘ข def home() ํ™ˆ์„ ์•„๋ž˜ ๋‚ด์šฉ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.
-> render template์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ํ…œํ”Œ๋ฆฟ(index.html)์„ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
-> ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ธ url, method(๊ฒฝ๋กœ, ๋ฐฉ๋ฒ•)์ด ๋งž์•„์•ผ def ๋ฐ‘์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค!

โ‘ฃ ๋งˆ์ง€๋ง‰ ์ค„์— port=5000๋ฒˆ์„ ๋ถ€์—ฌํ•œ ๊ฒฐ๊ณผ
->localhost:5000
-> 5000 = ์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” port(ํ•ญ๊ตฌ)์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ
-> ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ์ผ๋‹จ ๋ง‰๊ณ  ๋“ค์–ด์˜จ ์š”์ฒญ๋งŒ ์—ฌ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ !
โ‘ค app.py๋ฅผ ์‹คํ–‰
-> ์„œ๋ฒ„๊ฐ€ ๋Œ๊ณ  ์žˆ๋‹ค(Running) = request๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค.
-> ๋งˆ์ง€๋ง‰ 172.30~ ๋ถ€๋ถ„์€ ๋‚ด IP์ฃผ์†Œ

  • logging์„ ํ†ตํ•ด ์ฝ”๋“œ๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ„ฐ๋ฏธ๋„์—์„œ ํŒŒ์•…ํ•œ๋‹ค.

    • ex. python = print / Javascript = consol.log
  • home route๊ฐ€ ์•„๋‹Œ (๋‹ค๋ฅธ url์„ ๊ฐ€์ง„)route์— print๋กœ ์“ด ๋‚ด์šฉ์ด ํ„ฐ๋ฏธ๋„์— ์ฐํ˜€ ์žˆ์—ˆ์Œ.
    -> main.js๋ฅผ ๋ณด๋‹ˆ ๋ฌธ์„œ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋ฐ”๋กœ show template์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ!
    ์›๋ž˜๋Š” home route์˜ print ๋‚ด์šฉ๋งŒ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•จ


  • Get / Post
    • ํ‘œ์‹œ ์—†์œผ๋ฉด = Get(๊ธฐ๋ณธ๊ฐ’)
    • Get: ํŒŒ๋ผ๋ฏธํ„ฐ ๋…ธ์ถœ
      -> ex. id, pw(ํŒŒ๋ผ๋ฏธํ„ฐ. ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋Š” ๊ฒƒ๋“ค)์ด ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— get์€ ๊ฐ„๋‹จํ•œ rendering ์ •๋„๋ฅผ ํ•  ๋•Œ ์“ด๋‹ค
      -> request.form[]์„ ํ†ตํ•ด ์ „๋‹ฌ์ด ๋œ๋‹ค
    • Post: ํŒŒ๋ผ๋ฏธํ„ฐ ๋…ธ์ถœX
      -> ๋Œ€๋ถ€๋ถ„ DBํ†ต์‹ ์ด ์ด๋ ‡๊ฒŒ ์ด๋ค„์ง„๋‹ค.
      โญ๊ธฐ์–ตํ•  ๊ฒƒ: ํŒŒ๋ผ๋ฏธํ„ฐ(๋งค๊ฐœ๋ณ€์ˆ˜)๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค

  • ๋™๊ธฐ / ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
    • ๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹:
      1, 2, 3๊ฐ€์ง€์˜ ์š”์ฒญ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ
      = ์•ž ์š”์ฒญ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ๋ฉˆ์ถ˜๋‹ค
    • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹:
      1, 2, 3๊ฐ€์ง€ ์š”์ฒญ์„ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ
      = ์•ž์˜ ์š”์ฒญ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค
      = ์‘๋‹ต ๊ฐ’์„ ๋ฐ”๋กœ๋ฐ”๋กœ ์ค€๋‹ค
      = ์พŒ์ ํ•œ UX(์‚ฌ์šฉ์ž ๊ฒฝํ—˜)์„ ๋งŒ๋“œ๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค
      • skeleton ui: ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ํ•˜์–€ ํ™”๋ฉด๋งŒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋„๋ก ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œ
  • ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด ์ •๋ฆฌ
    • clear
    • pwd ํ˜„์žฌ์˜ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธ
    • ls ๋ชฉ๋ก ๋ณด๊ธฐ
    • cd ๊ฒฝ๋กœ์ด๋ฆ„ ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ๊ฐ€๊ธฐ
    • cd.. ์ƒ์œ„ ๊ฒฝ๋กœ๋กœ ๊ฐ€๊ธฐ
    • python3 app.py ์‹คํ–‰

2. Algorithm_Python_2์ฃผ์ฐจ

  • ์–ด๋ ˆ์ด์™€ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ
    • Array - ๋ฐ์ดํ„ฐ ์กฐํšŒ
    • LinkedList - ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ
    • Python์˜ list = LinkedList์™€ Array ๋ชจ๋‘ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ํšจ์œจ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ
    • sum()์€ ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅํ•จ์ˆ˜
      -> linked_list_sum ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ •ํ•˜๊ธฐ

3. Algorithm ํŠน๊ฐ•

  • ์–ด๋Š ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์“ฐ๋“  ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ:
    <์‚ฝ์ž… ์‹œ๊ฐ„, ์‚ญ์ œ ์‹œ๊ฐ„, ๊ฒ€์ƒ‰ ์‹œ๊ฐ„, ์ •๋ ฌ ์—ฌ๋ถ€>
  • Double LinkedList: ์–‘๋ฐฉํ–ฅ ์†Œํ†ต

4. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

  • Day2 <์‚ฌ์น™์—ฐ์‚ฐ, ์กฐ๊ฑด๋ฌธ, ๋ฐฐ์—ด>
    • ๋ชซ ๊ตฌํ•˜๊ธฐ์—์„œ ์†Œ์ˆ˜์  ๋–ผ๋Š” ๊ฒƒ์— Math.floor()๋ฅผ ๋ฐฐ์›Œ์„œ ์‚ฌ์šฉํ•จ
      -> Math.trunc ์ •์ˆ˜ ๋ถ€๋ถ„ ๋ฐ˜ํ™˜
      -> parseInt ๋ฌธ์ž์—ด์„ ๋ฐ›๋Š” ํ•จ์ˆ˜. ๋ฌธ์ž์—ด์ด ์•„๋‹ ๋•Œ๋Š” ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ๋ณธ๋ž˜ ํ•จ์ˆ˜ ์˜๋ฏธ์— ๋งž๊ฒŒ ๋ฌธ์ž์—ด์— ์“ฐ๊ธฐ
  • Git repo์— ๋‚ด๊ฐ€ ํ‘ผ ๋ฌธ์ œ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€๋ฐ ์™œ ์•ˆ ์˜ฌ๋ผ๊ฐ€๋‹ˆใ…œใ…œ

๐Ÿšฉ

๋‚ด ์ƒ๊ฐ

  • ์ปค๋ฆฌํ˜๋Ÿผ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€๊ณ ๋Š” ์žˆ๋Š”๋ฐ ์ •๋ง '์ž˜' ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ๋Š” ๊ฒƒ์ธ๊ฐ€?
    • ์˜ค๋Š˜ ์˜ค์ „์— ๋“ค์€ WEB ํŠน๊ฐ•์€ ๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด ์ข‹์•˜๋‹ค. ๋‚ด๊ฐ€ ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ์—์„œ MongoDB๋ฅผ ์—ฐ๊ฒฐํ–ˆ์ง€๋งŒ ์ž˜ ๋ชจ๋ฅด๋Š” ์ฑ„๋กœ ๊ทธ๋ƒฅ ์ˆ˜์—… ์ฝ”๋“œ๋งŒ ๋”ฐ๋ผ ๋ถ™์ธ ๊ฒƒ ๊ฐ™์•„ ๋‹ต๋‹ตํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜ ๊ทธ ์ฝ”๋“œ๊ฐ€ ์ดํ•ด๋˜๋ฉด์„œ ๋นˆ ๋ถ€๋ถ„์ด ์ฑ„์›Œ์ง„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์„ ๊ฝค ์ผ๋Š”๋ฐ๋„ ๋‚ด ์ง€์‹์ด +1๋˜๋Š” ๊ฒƒ ๊ฐ™์•„ ์ข‹์•˜๋‹ค.
    • ํŠน๊ฐ• ๋“ฃ๊ณ  ์ •๋ฆฌ, ์›๊ฒฉ ๊ฐ•์˜ ๋“ฃ๊ณ  ์ •๋ฆฌ, ์ด๋ฒˆ ์ฃผ๋ถ€ํ„ฐ ํ•  ์ฃผ๋ง ์Šคํ„ฐ๋””(git, js), ๊ฐœ์ธ์ ์œผ๋กœ html๊ณผ css ์œ ํŠญ ๊ฐ•์˜ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊น”์ง..
      ํ•  ๊ฑด ๋งŽ๊ณ  ๋” ๋งŽ์•„์ง€๋Š”๋ฐ ๋‚˜๋Š” ์ถฉ๋ถ„ํžˆ ๋‚ด ์ง€์‹์œผ๋กœ ๋งŒ๋“ค๋ฉด์„œ ํ•ด๋‚ด๊ณ  ์žˆ๋Š”๊ฐ€..? ์ด๋Ÿฐ ์ €๋Ÿฐ ์ƒ๊ฐ๋“ค์ด ์ •๋ฆฌ๊ฐ€ ์•ˆ ๋œ์ฑ„๋กœ ๋‘ฅ๋‘ฅ ๋– ๋‹ค๋‹ˆ๋Š” ๊ธฐ๋ถ„..!
      ์ผ๋‹จ ๋‚ด๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์€ ๊ณ„์† ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•ด๊ฐ€๋ฉฐ ๊ณต๋ถ€ํ•˜๊ณ  ๋‹ค์Œ ์ฃผ์— ํ•™์Šต๋ฐฉํ–ฅ, ํƒœ๋„ ๋‹ค์‹œ ์ ๊ฒ€ํ•ด๋ณด๊ธฐ!
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€