๐Ÿง TIL

๐Ÿ” ์ธ์ฆ๊ณผ ์ธ๊ฐ€์˜ˆ์‹œ) ๋ฐ˜๋ ค ๋™๋ฌผ ๊ด€๋ฆฌ์ธ์—ด์‡  ํ˜•ํƒœ์˜ ์ธ์ฆ์ด ํ•„์š”์ž๊ฒฉ ์ฆ๋ช…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ์šฉ์ž์— ํ•œํ•ด์„œ ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ˜„๊ด€ ์ž๋ฌผ์‡ ์— ๋งž๋Š” ์—ด์‡ ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ์—๊ฒŒ๋งŒ ์ ‘๊ทผ์ด ํ—ˆ์šฉ์ถœ์ž… ํ—ˆ๊ฐ€์— ํ•ด๋‹นํ•˜๋Š” ์ธ๊ฐ€ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ํ•„์š”์ผ๋‹จ ์ง‘ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ฃผ๋ฐฉ์— ๊ฐ€์„œ ๋ฐ˜๋ ค ๋™๋ฌผ ์‚ฌ๋ฃŒ๊ฐ€ ๋ณด๊ด€๋œ ๊ณณ์„ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์ธ์ฆ์„ ๋ฐ›์Œ.ํ•˜์ง€๋งŒ ์นจ์‹ค์— ๋“ค์–ด๊ฐ€์„œ ๋‚ฎ์ž ์„ ์ž˜ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์€ ์—†์Œ๐Ÿ’ก ๋ฐ˜๋ ค ๋™๋ฌผ ๊ด€๋ฆฌ์ธ์€ ์ง‘์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ(์ธ์ฆ)์ด ์žˆ์œผ๋ฉฐ, ์ผ๋‹จ ๋‚ด๋ถ€๋กœ ์ž…์žฅํ•˜๋ฉด ํŠน์ • ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค(์ธ๊ฐ€).
function solution(arr){ const newArr = []; for(i = 0; i  ์Šคํƒ, ํ  ํ›„์ž…์„ ์ถœ ๋ฐฉ์‹ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Œ
๐Ÿ’‍โ™€๏ธ ์˜ˆ์‚ฐS์‚ฌ์—์„œ๋Š” ๊ฐ ๋ถ€์„œ์— ํ•„์š”ํ•œ ๋ฌผํ’ˆ์„ ์ง€์›ํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด ๋ถ€์„œ๋ณ„๋กœ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธˆ์•ก์„ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ „์ฒด ์˜ˆ์‚ฐ์ด ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ถ€์„œ์˜ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ถ€์„œ์˜ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ๋•Œ๋Š” ๊ฐ ๋ถ€์„œ๊ฐ€ ์‹ ์ฒญํ•œ ๊ธˆ์•ก๋งŒํผ์„ ๋ชจ๋‘ ์ง€์›ํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1,000์›์„ ์‹ ์ฒญํ•œ ๋ถ€์„œ์—๋Š” ์ •ํ™•ํžˆ 1,000์›์„ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ, 1,000์›๋ณด๋‹ค ์ ์€ ๊ธˆ์•ก์„ ์ง€์›ํ•ด ์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ถ€์„œ๋ณ„๋กœ ์‹ ์ฒญํ•œ ๊ธˆ์•ก์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด d์™€ ์˜ˆ์‚ฐ budget์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ๋ถ€์„œ์— ๋ฌผํ’ˆ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.  ๐Ÿ‘ฉ‍๐Ÿ’ป ํ’€์ดfuncti..
Upsert query?- ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด UPDATE, ์—†๋‹ค๋ฉด INSERT- ์ˆ˜์ • ๋กœ์ง ์งค๋•Œ ๋ฐ”๋€ ๊ฐ’๋งŒ UPDATEํ•˜๊ณ , ์ˆ˜์ •ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผํ•  ๋•Œ๋Š” INSERT๋ฅผ ํ•ด์ค€๋‹ค.- ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด๋ฉด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ์ด๋ฏธ ์žˆ๊ณ  refresh_token ๊ฐ’๋งŒ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์‹ถ์„๋•Œ Upsert๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.INSERT INTO refresh_token (user_id, refresh_token)VALUES (#{userId}, #{refreshToken}) ON DUPLICATE KEYUPDATE refresh_token = #{refreshToken}
bcrypt์™€ express-session ์„ค์น˜ ๊ณผ์ •์—์„œ ๋‚˜์˜จ ์—๋Ÿฌ์˜€๋‹ค. ์›์ธ์€ ๋‚ด๊ฐ€ ์„ค์น˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ค‘ node ๋ฒ„์ „๊ณผ ํ˜ธํ™˜์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ๋˜๋Š” ์—๋Ÿฌ์˜€๋‹ค.node ๋ฒ„์ „์„ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์›๋˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ฉด ๋œ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธnpm update Node ๋ฒ„์ „ ๋‚ฎ์ถ”๊ธฐnvm ์‚ฌ์šฉํ•ด์„œ ๋‚ฎ์ถ”๊ธฐ// ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ๋ฒ„์ „ ์ฐพ๊ธฐnvm list available// ์›ํ•˜๋Š” ๋ฒ„์ „์˜ ๋…ธ๋“œ ์„ค์น˜ํ•ด์ฃผ๊ธฐ// 18์ด์ƒ๋ถ€ํ„ฐ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ์ž˜ ๋ฐœ์ƒํ–ˆ์–ด์„œ 17๋กœ ๋‚ฎ์ท„๋‹ค.nvm install 17// 17 ๋ฒ„์ „ ์‚ฌ์šฉํ•˜๊ธฐnvm use 17  brew ์‚ฌ์šฉํ•ด์„œ ๋‚ฎ์ถ”๊ธฐhomebrew ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์›ํ•˜๋Š” node ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ณ  ์„ค์น˜// ์›ํ•˜๋Š” ๋ฒ„์ „์˜ ๋…ธ๋“œ ์„ค์น˜bre..
Mysql ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ด€๋ จ ์ •์ฑ… ์—๋Ÿฌ ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ๊ณ , ์ƒˆ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒ๋œ ์—๋Ÿฌ๋‹ค. ์ด์œ ๋Š” ๋‚ด๊ฐ€ ๋ฐ”๊พธ๋ ค๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ •์ฑ…์— ๋งž์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ(๊ธธ์ด, ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž ํฌํ•จ ๋“ฑ) ์ •์ฑ… ๊ธฐ์ค€์„ ๋‚ฎ์ถฐ ์ง„ํ–‰ํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ํ›„์— ์ง„ํ–‰ํ•˜๋ผ๊ณ  ํ•ด์„œ ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•ด์ค€ ํ›„ ์ •์ฑ… ๊ธฐ์ค€์„ ๋‚ด๋ ค ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณค๋‹ค. # ์ดˆ๊ธฐ ๋น„๋ฒˆ ์„ค์ • ALTER USER 'root'@'localhost' IDENTIFIED BY '์ดˆ๊ธฐ์— ์„ค์ •๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ'; # ์ •์ฑ… ํ™•์ธ SHOW VARIABLES LIKE 'validate_password%'; # ์ •์ฑ… ๋ณ€๊ฒฝ SET GLOBAL validate_password.policy=LOW; # ๋น„๋ฒˆ ๋‹ค์‹œ ๋ณ€๊ฒฝ ALTER ..
์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ mysql ์„ค์น˜ ํ›„ ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋žœ๋ค์œผ๋กœ ์ง€์ •๋œ๋‹ค. sudo grep 'temporary password' /var/log/mysqld.log ๋‚˜๋Š” ๋‘๋ฒˆ์งธ๊บผ๋กœ ํ–ˆ์„๋•Œ ์ ‘์†์ด ๋๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ Mysql ์ ‘์† ํ›„ ALTER๋ฌธ ํ™œ์šฉํ•ด์„œ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค. alter user 'root'@'localhost' identified by '์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ'
yum list installed | grep mysql systemctl list-unit-files | grep mysqld sudo yum install https://dev.mysql.com/get/mysql80-community-release.noarch.rpm sudo systemctl start mysqld
์ผ๋‹จ ์ฒซ๋ฒˆ์งธ๋กœ ํ™•์ธํ•ด์•ผํ•  ๊ฒƒ - mysql ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋ผ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธ - ์„ค์น˜๊ฐ€ ๋‹ค ๋œ ์ƒํ™ฉ์ด๋ฉด, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ํ•ด์ฃผ๊ธฐ 1. mysql ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ (๋‚˜์˜ ๊ฒฝ์šฐ) ์„ค์น˜ ์ง„ํ–‰์ค‘์— ๋งŒ๋‚œ ๊ฒฝ๊ณ ์˜€๋Š”๋ฐ ์ƒ๊ด€์—†์ด ์„ค์น˜๊ฐ€ ๋‹ค ๋œ ์ค„ ์•Œ์•˜๋‹ค. RPM GPG Key ๊ด€๋ จ ์˜ค๋ฅ˜ - mysql ์„ค์น˜ ํ• ๋•Œ rpm์ด๋ผ๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์„ค์น˜ ํ•˜๋Š”๋ฐ rpm ํŒจํ‚ค์ง€๋Š” GPG๋ผ๋Š” ์•”ํ˜ธํ™” ๋„๊ตฌ๋กœ ์„œ๋ช… ๋ผ์žˆ์–ด rpm ํŒจํ‚ค์ง€ ์ œ๊ณตํ•˜๋Š” ์ €์žฅ์†Œ์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค. - ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ด์œ ๋Š” ์ด 3๊ฐ€์ง€๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 1) ๊ณต๊ฐœํ‚ค๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 2) ๊ณต๊ฐœํ‚ค๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ์‹œ์Šคํ…œ์— ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 3) ๊ณต๊ฐœํ‚ค๊ฐ€ ์†์ƒ๋˜์—ˆ๊ฑฐ๋‚˜ ์œ„์กฐ๋œ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๊ณต๊ฐœํ‚ค URL์„ ์ฐพ์•„ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. #..
๊ธฐ์กด๊นŒ์ง€๋Š” nest.js์˜ ๊ตฌ์กฐ์— ๋งž์ถฐ ์•„ํ‚คํ…์ฒ˜ ์‹ ๊ฒฝ ์•ˆ์“ฐ๊ณ  ๊ตฌํ˜„์—๋งŒ ์‹ ๊ฒฝ ์ผ์—ˆ๋Š”๋ฐ ์ง€๊ธˆ ํšŒ์‚ฌ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋Š” mvc ํŒจํ„ด์ด์—ˆ๊ณ , TypeORM์„ ์•ˆ์จ์„œ orm ์—†์ด ์–ด๋–ป๊ฒŒ mysql ์—ฐ๊ฒฐํ• ์ง€๋ถ€ํ„ฐ ๋ง‰๋ง‰ํ–ˆ๋‹ค. 1. Nest.js, MySQL ์‚ฌ์šฉํ•ด์„œ MVC ํŒจํ„ด ๊ตฌ์กฐ ์งœ๊ธฐ - nestjs mvc ํŒจํ„ด ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ ์™œ ๋ทฐ๋‹จ๋งŒ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ  ๋งˆ๋Š”๊ฑด๋ฐ..(๋‚ด๊ฐ€ ๊ถ๊ธˆํ•œ๊ฑด model์ธ๋””) - ์ผ๋‹จ ์ฐธ๊ณ ํ•ด์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ–ˆ๊ณ  model์€ ๋นผ๊ณ  service ํŒŒ์ผ ๋ถ€๋ถ„์— model์ด ๋‹ด๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋‹ค ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค. - entity(typeorm ๋ฐฉ์‹)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. - ๋ทฐ ํ…œํ”Œ๋ฆฟ์€ ejs๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. - fastify ์‚ฌ์šฉํ•œ ๋ถ€๋ถ„๋งŒ ์žˆ์–ด์„œ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์ฐพ์•„๋ดค๋Š”๋ฐ ์ œ์ผ ๋„์›€ ๋˜์—ˆ๋˜๊ฑด ์ด ์œ ํŠœ๋ธŒ ์˜์ƒ์ด์—ˆ๋‹ค..
sooyoung.c.dev
'๐Ÿง TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก