Skip to content

Node.js๋ฅผ ์ด์šฉํ•œ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‹คํ–‰ ์›น์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

Notifications You must be signed in to change notification settings

boorooksus/Python-Running-Web-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RunPythonOnline

ํŒŒ์ด์ฌ3 ์ฝ”๋“œ ์ปดํŒŒ์ผ ์›น์‚ฌ์ดํŠธ


ํ”„๋กœ์ ํŠธ ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ์†Œ์Šค์ฝ”๋“œ zipํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ’€๊ธฐ
  2. CMD์ฐฝ์—์„œ ์••์ถ• ํ•ด์ œํ•œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
  3. CMD์ฐฝ์—์„œ 'npm install' ๋ช…๋ น์–ด ์ž…๋ ฅ
  4. CMD์ฐฝ์—์„œ 'npm run start' ๋ช…๋ น์–ด ์ž…๋ ฅ
  5. ์›น๋ธŒ๋ผ์šฐ์ ธ์—์„œ 'http://localhost:3000' ์œผ๋กœ ์ด๋™

  • ์‹คํ–‰ ์˜์ƒ



  • ์—๋Ÿฌ๊ฐ€ ์žˆ์„ ๋•Œ


  • ํ•œ๊ธ€ ์ถœ๋ ฅ



ํ”„๋กœ์ ํŠธ ๋™๊ธฐ ๋ฐ ๋ชฉํ‘œ

Node.js์™€ Python ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜๊ณ  ์ด๋ฅผ ์ ์šฉํ•˜์—ฌ, ์›น์—์„œ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค.


๊ตฌํ˜„ ๋‚ด์šฉ

์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ๋Š” Node.js์™€ Express.js ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ๋Š” html, css, javascript ๊ทธ๋ฆฌ๊ณ  bootstrap4๋ฅผ ํ™œ์šฉํ•˜์˜€๋‹ค. Node.js์—์„œ Python ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•˜์—ฌ 'python-shell' npm์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ 'file-system' npm์„ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒํ•˜์˜€๋‹ค.
ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋จผ์ € ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ ๋ฐ›์€ ๋’ค POST ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์ „์†ก ๋ฐ›์€ ์ฝ”๋“œ์— ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ •๊ณผ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ๋ง๋ถ™์ธ๋‹ค. ์™„์„ฑ๋œ ์ฝ”๋“œ๋ฅผ 'exec.py' ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ python-shell์„ ์ด์šฉํ•˜์—ฌ ์ €์žฅ๋œ ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๋‹ค. ํŒŒ์ด์ฌ ํŒŒ์ผ์ด ์‹คํ–‰๋  ๋•Œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ์— ์˜ํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์ด 'output.out'ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค. Node.js์—์„œ๋Š” ์ด ํŒŒ์ผ์„ ์ฝ์–ด์„œ ์›น์— ์ถœ๋ ฅ์‹œํ‚จ๋‹ค.
ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ python-shell runํ•จ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ํŒŒ์ผ๋กœ ์ €์žฅํ•œ ๋’ค ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ํ•œ๊ธ€์˜ ์ธ์ฝ”๋”ฉ ๋•Œ๋ฌธ์ด๋‹ค. runํ•จ์ˆ˜๋กœ ์ „๋‹ฌ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋Š” utf-8 ์ธ์ฝ”๋”ฉ์ด ๋˜์ง€ ์•Š์•„์„œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฌผ์— ํ•œ๊ธ€์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊นจ์ง€๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ utf-8์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ ๋’ค, ํ•ด๋‹น ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜์˜€๋‹ค.


ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋А๋‚€์ 

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด Node.js์™€ ํŒŒ์ด์ฌ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ์ด๋Š” ํŒŒ์ด์ฌ์˜ ์›นํฌ๋กค๋ง, ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์›น์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋œ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•œ๊ธ€ ์ถœ๋ ฅ์ด ๊นจ์ง€๋Š” ํ˜„์ƒ์„ ๊ณ ์น˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•˜์˜€๋Š”๋ฐ ์ด๋ฅผ ํ†ตํ•ด ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ธ utf-8์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ํŒŒ์ด์ฌ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์ธ sys.stdout=open์—์„œ encoding='utf8'์„ ์จ์„œ ํŒŒ์ผ์„ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์ด ํŒŒ์ผ์„ node.js์—์„œ ์ฝ๋Š” ๋ฐฉ์‹์„ ํ†ตํ•ด ํ•œ๊ธ€ ๊นจ์ง ํ˜„์ƒ์„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ๊ณผ์ •์€ ํž˜๋“ค์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์ด ๋งค์šฐ ๋งŒ์กฑ์Šค๋Ÿฌ์› ๋‹ค.


์•„์‰ฌ์šด ์  ๋ฐ ๊ฐœ์„ ํ•  ์‚ฌํ•ญ

  1. Ajax๋ฅผ ์ด์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋” ๋ฉ‹์ง„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฑฐ๋“ญ๋‚  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
  2. ํŒŒ์ด์ฌ์˜ Input() ํ•จ์ˆ˜๋ฅผ ์ด์šฉ ๋ชปํ•˜๋Š” ์ ์ด ์•„์‰ฝ๋‹ค. ํŒŒ์ด์ฌ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๋  ๋•Œ, ์ฝ˜์†” ์ฐฝ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ›„ ์ž…๋ ฅ ์ฐฝ์— Input ํ•จ์ˆ˜๋ฅผ ๋„ฃ์œผ๋ฉด EOF ์˜ค๋ฅ˜๊ฐ€ ๊ฒฐ๊ณผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. Node.js์—์„œ python-shell option value๋กœ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์— ์ธ์ž๋ฅผ ์ „๋‹ฌ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํŒŒ์ด์ฌ ์ฝ”๋“œ์—์„œ Input์ด ์•„๋‹Œ sys.argv๋กœ ์ธ์ž๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Input ์˜ค๋ฅ˜์˜ ํ•ด๊ฒฐ์ฑ…์€ ๋˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋Œ€์•ˆ์œผ๋กœ python-shell์˜ sendํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋‚˜ ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ๋กœ ์ „๋‹ฌ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์˜€๋‹ค.
  3. C++, Java ๋“ฑ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋„ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. 'child-process' npm์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ด์ฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹์„ ์—ฐ๊ตฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

About

Node.js๋ฅผ ์ด์šฉํ•œ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‹คํ–‰ ์›น์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published