Nodejs

Node.js ๊ธฐ๋ณธ ๋ช…๋ น npm init : ํŒจํ‚ค์ง€ ์ƒ์„ฑ npm install : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ -P : package.json์— ์ €์žฅ, ๊ธฐ๋ณธ์˜ต์…˜ -O : optionalDependencies์— ์ €์žฅ -D, --no-save : ๊ธฐ๋ก์—†์ด ๋‹ค์šด๋กœ๋“œ -g : ๊ธ€๋กœ๋ฒŒ ์„ค์น˜, ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉ MODULE_NAME@VERSION : ๋ฒ„์ „ ์„ค์ •, latest๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฒ„์ „์„ ์˜๋ฏธ node main.js : ์‹คํ–‰(main.js) npx <package_name> : ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์ผํšŒ๋งŒ ์‹คํ–‰ node main.js : ํŒจํ‚ค์ง€ ์‹คํ–‰ (main.jsํŒŒ์ผ) npm audit : ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, npm audit fix : ์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ช…๋ น์–ด, ์ผ๋ถ€ ํ•ด๊ฒฐ์„ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ package.json ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜. โ€“fix ์˜ต์…˜์„ ๋„ฃ์–ด์„œ ๊ฐ•์ œ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์˜คํžˆ๋ ค ๋˜๋˜ ๊ธฐ๋Šฅ์ด ์•ˆ ๋  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค. npm cache clean : ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“force ์˜ต์…˜์„ ๋„ฃ์–ด ๊ฐ•์ œ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ๊ตฌ์กฐ main.js : nodejs ์‹คํ–‰์‹œ ์‹คํ–‰ํ•  ๋ฉ”์ธ ํŒŒ์ผ package.json : root ๊ฒฝ๋กœ์— ์กด์žฌํ•˜๋ฉฐ, npm ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ /node_modules : ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ๋“ค์ด ์ €์žฅ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค. npm install ๋ช…๋ น ์‚ฌ์šฉ์‹œ ๋ชจ๋“ˆ๋“ค์ด ๋‹ค์šด๋ฐ›์•„์ง€๋Š” ๊ฒฝ๋กœ์ด๋‹ค. package.json nodejs ์„ค์ •์„ ๋‹ด๊ณ ์žˆ๋Š” ํŒŒ์ผ๋กœ, ์ฐธ์กฐํ•  ๋‚ด์šฉ์ด ๋งŽ์•„ ์•„๋ž˜์— ๋”ฐ๋กœ ์ •๋ฆฌํ•œ๋‹ค. ...

<span title='2020-07-20 20:40:05 +0900 KST'>July 20, 2020</span>&nbsp;ยท&nbsp;6 min&nbsp;ยท&nbsp;AswinBlue

PythonCGI

python CGI CGI๋Š” Common Gateway Interface์˜ ์•ฝ์ž๋‹ค. web application์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋Š” ruby, java, php ๋“ฑ ๋‹ค์–‘ํ•˜์ง€๋งŒ ๋ชจ๋‘ CGI ๊ทœ์•ฝ์„ ๋”ฐ๋ผ web server์™€ ํ†ต์‹ ํ•œ๋‹ค. web server๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์•ฝ์†๋œ ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ web application์— ์ „๋‹ฌํ•˜์—ฌ ์„œ๋กœ ๊ต๋ฅ˜ํ•œ๋‹ค. apache์—์„œ python์„ ์ด์šฉํ•ด web application์„ ๋งŒ๋“ค์–ด web server์™€ ํ†ต์‹ ํ•ด ๋ณด์ž. $ a2enmod CGI ๋ช…๋ น์œผ๋กœ apache์˜ CGI๋ฅผ ์ผœ ์ฃผ๊ณ , sudo service apache2 restart ๋กœ ์„ค์ • ์ ์šฉ /var/log/apache2/error.log ์•ˆ์— apache ์‹คํ–‰์‹œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์›น ์„œ๋ฒ„๋Š” ์‘๋‹ต์œผ๋กœ ์›น ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(ํ—ค๋”)์™€ ํ•จ๊ป˜ ์›น ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ๋‹ค. python CGI๋กœ๋Š” print("content-type:text/html; charset=UTF-8\n") ์™€ ๊ฐ™์ด ํ—ค๋”๋ฅผ ํ‘œ๊ธฐ๋‚ธ๋‹ค. ํ—ค๋”๋ฅผ ์ถœ๋ ฅํ•œ ๋‹ค์Œ ๋ถ€ํ„ฐ๋Š” body ๋ถ€๋ถ„์ด ์ถœ๋ ฅ๋œ๋‹ค. ํŠน์ • ์ฃผ์†Œ๋กœ Redirection์„ ํ•  ๋•Œ์—๋Š” print("location : index.py?id=title")์„ ์ด์šฉํ•œ๋‹ค. ( โ€˜:โ€™ ์ดํ›„ ๋ถ€ํ„ฐ โ€˜"โ€™ ๊นŒ์ง€๋Š” ์›ํ•˜๋Š”๋Œ€๋กœ ์ž‘์„ฑ) formatting string์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ ex) '{} {}'.format('one','tow') ex) '{a} {b}'.format(a='hello', b='world') python ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด๊ณผ format ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์  html์„ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. CGI ๋ชจ๋“ˆ import cgi ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•ด ์‚ฌ์šฉํ•œ๋‹ค. form = cgi.FieldStorage() form์€ jQuery์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ex) pageId = form['id'].value : page์˜ id๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. HTML ์—ฐ๋™ input ํƒœ๊ทธ์˜ name ์†์„ฑ : input ํƒœ๊ทธ๋ฅผ ํŠน์ • ์ด๋ฆ„์œผ๋กœ CGI์— ์ „๋‹ฌํ•จ ex) ...

<span title='2020-07-02 19:15:21 +0900 KST'>July 2, 2020</span>&nbsp;ยท&nbsp;3 min&nbsp;ยท&nbsp;AswinBlue

JavaScript

JavaScript ๊ธฐ๋ณธ์ ์œผ๋กœ HTML ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ body ํƒœ๊ทธ ์•ˆ์— ํƒœ๊ทธ๋ฅผ ๋„ฃ๊ณ  ์•ˆ์— ์ž‘์„ฑ document๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , .์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. querySelector(โ€™โ€™)๋กœ ์›ํ•˜๋Š” element ์„ ํƒ ๊ฐ€๋Šฅ, โ€˜โ€˜์•ˆ์˜ ๋‚ด์šฉ์€ css ์„ ํƒ์ž ๋ฌธ๋ฒ•๊ณผ ๊ฐ™์Œ querySelectorAll(โ€™โ€™)๋กœ ์›ํ•˜๋Š” ์†์„ฑ์˜ element๋“ค์„ nodeList(๋ฐฐ์—ด๊ณผ ์œ ์‚ฌ)ํ˜•ํƒœ๋กœ ์„ ํƒ ๊ฐ€๋Šฅ ex ) document.querySelector('body') ex ) document.querySelector('#new') ex ) document.write("hello world") ํƒœ๊ทธ ์•ˆ์— javaScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ex ) <input type="button" value="hello" onclick="alert('hello')"> ํŠน์ • ํƒœ๊ทธ ์•ˆ์—์„œ ์ž๊ธฐ์ž์‹ ์„ ํ˜ธ์ถœํ•  ๋•Œ์—๋Š” querySelector๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  this๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ...

<span title='2020-06-23 20:38:45 +0900 KST'>June 23, 2020</span>&nbsp;ยท&nbsp;3 min&nbsp;ยท&nbsp;AswinBlue

Css

CSS ํŠน์ • ๊ฐœ์ฒด์— ํšจ๊ณผ๋ฅผ ๋ถ€๊ณผํ•œ๋‹ค. ์ด๋ฅผ declaration ์ด๋ผ ์นญํ•œ๋‹ค. ์ค‘๋ณต์˜ ์ œ๊ฑฐ ๊ฐ€๋Šฅ, ์œ ์ง€๋ณด์ˆ˜ ์ˆ˜์›”, ๊ฐ€๋…์„ฑ ์ฆ๊ฐ€ ์œ„์—์„œ ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ฝ์–ด๊ฐ€๋ฉฐ ํšจ๊ณผ ์ ์šฉ, ์ค‘๋ณต ๋ถˆ๊ฐ€๋Šฅํ•œ ํšจ๊ณผ์— ๋Œ€ํ•ด์„œ๋Š” ์ด์ „ ํšจ๊ณผ๊ฐ€ ์‚ฌ๋ผ์ง tag ์„ ํƒ์ž < calss ์„ ํƒ์ž < id ์„ ํƒ์ž ๋กœ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. html ๋ฌธ์„œ ์•ˆ์— <style> ํƒœ๊ทธ ์•ˆ์— ์ž‘์„ฑ ๊ฐ€๋Šฅ ex ) <style> a { color:black; } </style> ํƒœ๊ทธ์˜ ์ข…๋ฅ˜๋ณ„๋กœ ์†์„ฑ ์„ค์ • ๊ฐ€๋Šฅ ์—ฌ๊ธฐ์„œ ํƒœ๊ทธ a ๋Š” ์„ ํƒ์ž(selector)๋ผ๊ณ  ํ•œ๋‹ค. ์„ ํƒ์ž๋Š” ,๋กœ ๊ตฌ๋ณ„ํ•˜์—ฌ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ...

<span title='2020-06-23 20:38:05 +0900 KST'>June 23, 2020</span>&nbsp;ยท&nbsp;2 min&nbsp;ยท&nbsp;AswinBlue

HTML

HTML W3C์—์„œ HTML ๊ทœ์น™์„ ๊ทœ์ •, ์›น ๋ธŒ๋ผ์šฐ์ € ์ œ์ž‘์‚ฌ๋“ค์ด ์ด๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋งŒ๋“ ๋‹ค. ํƒœ๊ทธ element๋ผ๊ณ  ์นญํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๊ฐ€ ์กด์žฌ <TAG_NAME> ๋กœ ์‹œ์ž‘ํ•˜๊ณ  </TAG_NAME>๋กœ ๋๋ƒ„ ํƒœ๊ทธ๋ณ„๋กœ ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ๋…ธ์ถœ๋˜๋Š” ์ค‘์š”๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค. ํƒœ๊ทธ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ค„ ์ „์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜(block level element), ๋‚ด์šฉ์˜ ํฌ๊ธฐ ๋งŒํผ์˜ ๊ณต๊ฐ„๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ(lnline element)๋“ค์ด ์žˆ๋‹ค. html : body์™€ head๋ฅผ ํ†ตํ‹€์–ด ๋ฌถ์€ ์ตœ ๊ณ ์œ„ ํƒœ๊ทธ ๊ด€์šฉ์ ์œผ๋กœ <!doctype html> ์„ ๋ถ™์—ฌ ์“ด๋‹ค. body : ๋ณธ๋ฌธ์„ ๋ฌถ๋Š” ํƒœ๊ทธ head : ๋ณธ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ํƒœ๊ทธ ์†์„ฑ(attribute) <TAG_NAME ATTRIBUTE> ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํƒœ๊ทธ ์ด๋ฆ„ ๋’ค์— ๋ถ™์Œ body ์†์„ฑ strong : ๊ตต์€ ๊ธ€์”จ ...

<span title='2020-06-23 19:13:17 +0900 KST'>June 23, 2020</span>&nbsp;ยท&nbsp;2 min&nbsp;ยท&nbsp;AswinBlue