์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [MySQL] SELECT๋ฌธ ํ˜•์‹ | ์ž‘์„ฑ ์ˆœ์„œ

    SELECT select_expr [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr | position}] [HAVING where_condition] [ORDER BY {col_name | expr | position}]

    [MySQL] ์ž๋ฃŒํ˜•

    ์ˆซ์ž INT: ์ •์ˆ˜ํ˜• ์ž๋ฃŒํ˜• FLOAT: ์†Œ์ˆ˜ํ˜• ์ž๋ฃŒํ˜• ๋ฌธ์ž์—ด CHAR(): ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž์—ด. ์ง€์ •ํ•œ ๊ธธ์ด๋ณด๋‹ค ์งง๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์€ ๊ณต๋ฐฑ์œผ๋กœ ๋‚จ๋Š”๋‹ค. VARCHAR(): ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด. ์ง€์ •ํ•œ ๊ธธ์ด๋ณด๋‹ค ์งง๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. TEXT: ์ฃผ๋กœ URL, ๊ฒŒ์‹œ๊ธ€ ๋“ฑ ๊ธด ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ TIMESTAMP: YYYY-MM-DD HH:MM:SS ํ˜•ํƒœ๋กœ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•œ๋‹ค. DATETIME: TIMESTAMP์™€ ๊ฐ™์ด ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๋ฉฐ 1001๋…„ - 9999๋…„์˜ ๋” ๋„“์€ ๋ฒ”์œ„์˜ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    [JavaScript] var๋ฅผ ์ง€์–‘ํ•ด์•ผํ•˜๋Š” ์ด์œ 

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ var ๋Œ€์‹  let์ด๋‚˜ const๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋”๋ผ. ์šฐ์„ , var์€ ๋™์ผํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๋‹ด์•„๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋•Œ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์„ ์–ธ๋œ name์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ํŽธํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์‚ฌ์‹ค ๊ต‰์žฅํžˆ ์œ„ํ—˜ํ•œ ๊ธฐ๋Šฅ์ด๋‹ค. ๊ฐœ๋ฐœ ์ค‘ ์ฝ”๋“œ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์ง€๋‹ค๋ณด๋ฉด ๋‚ด๊ฐ€ ์„ ์–ธํ•ด์ค€ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ ๊ฐ’์ด ๋ฐ”๋€Œ์–ด๋ฒ„๋ฆฐ๋‹ค๋ฉด.. ๊ทธ ๋‚  ์ด์ œ ์šธ๋ฉด์„œ ๋Šฆ๊ฒŒ ์ž๋Š”๊ฑฐ์ž„ var name = "Jedi"; var name = "Yujin"; ๋ฐ˜๋ฉด, let์€ var๊ณผ ๋‹ค๋ฅด๊ฒŒ ์„ ์–ธํ–ˆ๋˜ ๋ณ€์ˆ˜๋ฅผ ์žฌ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•„๊นŒ ์–ธ๊ธ‰ํ•œ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. let name = "Jedi"; let name = "Yujin"; // Err..

    [JavaScript] async & await | ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

    async & await ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ํŒจํ„ด์œผ๋กœ, ๊ธฐ์กด์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์™€ Promise์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋Š” ํ‚ค์›Œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. (์•„์ง Promise๋„ ์ž˜ ๋ชจ๋ฅด๋Š”๋ฐ..^^) async function ํ•จ์ˆ˜๋ช…(){ await ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฉ”์„œ๋“œ๋ช…(); } async async ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ์ค€ ํ•จ์ˆ˜์˜ return ๊ฐ’์€ ๋น„๋™๊ธฐ ๊ฐ์ฒด์ธ Promise์˜ resolve ๊ฐ’์ด ๋œ๋‹ค. ์ฆ‰, Promise์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ์–ป๋Š”๋‹ค. async function helloAsync(){ return new Promise(function(resolve, reject){ var s = "Hello, Async!"; resolve(s) }); } async function logSentence(){ var s..

    [MySQL] ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •ํ•˜๊ธฐ

    alter user 'root'@'localhost' identified with mysql_native_password by '์„ค์ •ํ•˜๊ณ ์‹ถ์€๋น„๋ฐ€๋ฒˆํ˜ธ'; ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ํ›„ ๋ณ€๊ฒฝ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด root ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. * ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ €์žฅํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. flush privileges;

    [AWS] EC2 ์ธ์Šคํ„ด์Šค์— ๊ณ ์ • IP ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•

    ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ์—์„œ ๊ณ ์ • IP ํ• ๋‹นํ•ด์ค„ ์ธ์Šคํ„ด์Šค ์„ ํƒ ํ›„ AWS > ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์•ˆ > ํƒ„๋ ฅ์  IP > ํƒ„๋ ฅ์  IP ์ฃผ์†Œ ํ• ๋‹น > ํ• ๋‹น ํด๋ฆญ ํ›„ > ํƒ„๋ ฅ์  IP ์ฃผ์†Œ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค ์„ ํƒ ํ›„ > ์—ฐ๊ฒฐ ์ด์ œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ป๋‹ค์ผœ๋„ ๊ณ ์ • IP๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— IP์ฃผ์†Œ๊ฐ€ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š์Œ ํ•˜๋‚˜์˜ ๋ฆฌ์ „ ๋‹น ์ตœ๋Œ€ 5๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿค”

    [Error] nodemon์„ ์„ค์น˜ํ–ˆ๋Š” ๋ฐ command not found: nodemon ์ด ๋œฐ ๊ฒฝ์šฐ

    package.json์„ ์ด์šฉํ•ด์„œ ์„ค์น˜ํ–ˆ๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ , nodemon์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋–ด๋‹ค. sudo npm install -g nodemon ์œผ๋กœ ์ „์—ญ ์„ค์น˜ ํ›„ ์‚ฌ์šฉํ•ด์ฃผ๋‹ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ฏธ ์ „์—ญ์œผ๋กœ ์‹œ์Šคํ…œ์— ๊น”์•„๋ฒ„๋ ธ์ง€๋งŒ, ์™œ ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ๊น ๋‚ด๊ฐ€ nodemon์„ ์‹คํ–‰ํ•  ๋•Œ script๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํ„ฐ๋ฏธ๋„๋กœ ์‚ฌ์šฉํ•ด์„œ ๊ทธ๋Ÿฐ๋“ฏํ•˜๋‹ค. ์ฐธ๊ณ ๋กœ nodemon์€ ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ €์žฅ๋งŒ ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์žฌ์‹คํ–‰ํ•ด์ฃผ๋Š” ์•„์ฃผ ํŽธํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

    [JavaScript] Promise | ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํƒˆ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

    ๋™๊ธฐ & ๋น„๋™๊ธฐ ๊ธ€์—์„œ ๋“ฑ์žฅํ•œ ์ฝœ๋ฐฑ ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Promise ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Promise๋ž€? : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ๋ฅผ ๋•๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ฝœ๋ฐฑ์„ ์ค„์ง€์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์ค€๋‹ค. ์šฐ์„ , ๋น„๋™๊ธฐ์ž‘์—…์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋Œ€๊ธฐ(Pending): ๋น„๋™๊ธฐ ์ƒํƒœ๊ฐ€ ์ž‘์—… ์ค‘์ด๊ฑฐ๋‚˜ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ดํ–‰(Fulfilled): ๋น„๋™๊ธฐ ์ƒํƒœ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋œ ์ƒํƒœ ๊ฑฐ๋ถ€(Rejected): ๋ฒ„๊ทธ, ๋˜๋Š” ์‹คํŒจํ•œ ์ƒํƒœ๋กœ ๋น„๋™๊ธฐ ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ resolve: ๋Œ€๊ธฐ => ์ดํ–‰ reject: ๋Œ€๊ธฐ => ๊ฑฐ๋ถ€ function isPositiveP(number) { const executor = (resolve, reject) => { setTimeo..