๐ TIL(98)
-
210826 (๊ฐ๋ฐ)๊ธฐ๋ก: ์ค๋์ ๊ทธ๋ฅ ์ผ๊ธฐ
์ค๋์ ์ฃผ์ ์ฃผ์ ๋จ๊ฒจ๋ณด๋ ๊ธฐ๋ก ๋ฐ๋ธ์ต์ค ํ๊ณผ ๊น ์ฐ๊ตฌ์ ๋์๊ฒ ๋ฏผํ ์๋ ๋ฏผํ๋ฅผ ๋ผ์น๊ณ ๋ณต์กํ ๊ฐ์ ์ด ๋ค์๋ค. ์ต๊ทผ๋ค์ด ๊ธฐ๋ก์ ์ต๊ด๋ ๋ค์ด๊ณ , ๊ฐ๋ฐ๋ ๋ ์ฌ๋ฐ์ด์ง๋ฉด์ ์กฐ๊ธ์ฉ ์ฑ์ฅํ๊ณ ์๋ค๋ ์๊ฐ์ ํ๋๋ฐ, ์ค๋ ์ผ์ ๊ฒช์ผ๋ ์์ง ๊ฐ ๊ธธ์ด ๋ฉ๋ค. ์์ฆ ํ์ ๊ฐ๋ฐํ๊ฒฝ ์ธํ ์ ์ ๊ฒฝ์ฐ๊ณ ์๋ค. ์ด ํ์ฌ๋... ์๋ฒ ๋ฐฉํ๋ฒฝ ์ฌ๋๋ฐ ์์ ํ ๊ธฐ์์ด ์๊ทธ๋ฆฌ ๋ง์์ง. ๊ฒฐ์ฌ๋ ๋นจ๋ฆฌ ๋๋๊ฒ ์๋๋ผ ์ ๋ฌด ๋๋ ์ด๊ฐ ์ฌํด์ง ๋๋ ์ข ์ข ์๊ธด๋ค. ์ผ์ ํ๊ธฐ ์ํด ์ผ์ ๋ง๋๋ ๋๋์ด๋ค. ๊ทธ๋๋ ์ง์ ์๋ฒ ๋ฐฉํ๋ฒฝ์ ์์๋ณด๋ฉด์ ๊ธฐ์ ์์ ํด๋ณด๋, ์ด๋ค ์๋ฒ๊ฐ ํ์ํ์ง, ์ด๋ค ๋ฉ์ปค๋์ฆ์ผ๋ก ์ ๋ฌด๊ฐ ๋์๊ฐ๋์ง ๊ฐ์ด ์๊ธด๋ค. ์์ผ๊ฐ ์ ์ฐจ ๋ฐ์์ง๋ ๊ธฐ๋ถ์ด๋ค. 9์์ด ๋๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ก๋์ ๊ฐ๋ฐ์ ์์ํ๋ค. ์ง๊ธ๊น์ง๋ ํ๋กํ ํ์ ๊ฐ๋ฐ๊ณผ ๊ฐ๋ฐํ๊ฒฝ ์ธํ ..
2021.08.27 -
210825 ๊ฐ๋ฐ๊ธฐ๋ก: ํจ์๋ ์ ํ์ํ์ง, ํ์ฌ ๋ฐฉํ๋ฒฝ ๋ฌธ์ ๋ก ์ธํด ๋ฐฐ์ด ์ ๋ค์ ์งง์ ๊ณ ์ฐฐ
๐ป ํจ์๊ฐ ์ ํ์ํ์ง ์๊ฐํด๋ณด์๋๊ฐ ๋ฉ์์ด์ฌ์์ฒ๋ผ ์ง์ฅ์ธ ์ฝ์ค์ ๋ณด์กฐ๊ฐ์ฌ๋ก ์ผํ ๋, ์๊ฐ์ ํ๋ถ์ด ํจ์๋ฅผ ๋๋์ฒด ์ ๋ฐฐ์์ผํ๋ ๊ฑฐ๋๊ณ ๋ฌผ์ด๋ณธ ๊ธฐ์ต์ด๋๋ค. ๊ทธ ๋น์์๋ ๋ญ ์ด๋ฐ ์ง๋ฌธ์ด ๋ค ์์ง ์ถ์๋๋ฐ, ์ด๋ค ๊ธฐ๋ฅ์ ์คํ์ํค๊ณ ์ถ์ ๋ ํ์ํ๊ธฐ ๋๋ฌธ์ด์์~ ์ ๋๋ก ๋ต๋ณ์ ๋๋ ธ๋๋ฐ ์ง๊ธ ์๊ฐํ๋ฉด 0์ ์ง๋ฆฌ ๋๋ต์ด๋ค. ์ค๋ ๋ ธ๋ง๋ ์ฝ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฆฐ์ง ๊ณผ์ ์์ ํจ์๋ฅผ ์ ์ฌ์ฉํ๋๋ ๋ผ๋ ๋ฌธ์ ๊ฐ ๋์๊ณ , ๋ต์ ์ฝ๋ ์กฐ๊ฐ์ ์บก์ํ ํ๊ธฐ ์ํจ์ด์๋ค. ์ฝ๋์กฐ๊ฐ์ ์บก์ํํ๋ค. ํน์ ์ฝ๋๋ค์ ๋ฐ๋ก ๋ฌถ๋๋ค. ์ด๋ ๊ฒ ๋ฌถ์ด๋ ์ฝ๋ ๋ญ์น๋ ํ์ํ ๋ ๋ค์ ์ฌ์ฉํ ์ ์๋ค. ์ฆ ์ด๋ค ๊ธฐ๋ฅ๋จ์๋ก ๋ญ์ณ ๋์ ์ฝ๋๋, ํด๋น ๊ธฐ๋ฅ์ด ํ์ํ ๋๋ง๋ค ์ ์ ํ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์ ํจ์๊ฐ ํ์ํ ์ด์ ๋ค. ํจ์๋ฅผ ์ฌ์ฉํ๋ ..
2021.08.25 -
[Postgres ์ ์ ์๋ฌ] : could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
์ํฉ : nestjs ์๋ฒ ์ ์์ db ์ฐ๊ฒฐ์ด ๋์ง ์๋ ๋ฌธ์ ๋ฐ์ ์๋ฌ๋ฉ์์ง : could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? ์์ธ: pg ์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ง ์์ ๋ฐ์ํ๋ ์๋ฌ (postgres server๊ฐ ๋ซํ ์ํ) ํด๊ฒฐ๋ฐฉ๋ฒ: ํฐ๋ฏธ๋์์ ์๋ ๊ฒฝ๋ก๋ก ์ ์ํ์ฌ postmaster.pid ํ์ผ์ ์ฐพ๋๋ค. $ /Users//Library/Application\ Support/Postgres/var-13 $ ls // ls ๋ช ๋ น์ด๋ก ๋๋ ํ ๋ฆฌ ๋ด์ ์กด์ฌ ํ์ผ ํ์ธ -> postmaster.p..
2021.08.25 -
210824 ๊ฐ๋ฐ๊ธฐ๋ก: ์๋ฐ์คํฌ๋ฆฝํธ Map() ๊ฐ์ฒด
์๋ฐ์คํฌ๋ฆฝํธ์ Map ๊ฐ์ฒด ๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก key ๊ธฐ๋ฐ ์ปฌ๋ ์ ์ด๋ค.ํ๋์ key์ ํ๋์ value ๊ฐ ๋งคํ๋์ด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์๋ฃํ์ผ๋ก, ๊ฐ์ฒด(object)์ ๋น์ทํ ๊ตฌ์กฐ๋ก ์ด๋ค์ ธ ์๋ค. ๊ณต๋ถํ๋ฉด์ ๋๋ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์, object ์ ๋ฌ๋ฆฌ forEach() ํจ์๋ฅผ ์ ์ฉํ ์ ์๋ค๋ ์ ์ด๋ค. forEach() ํจ์๋ฅผ ์ ์ฉํ๋ฉด Map() ๊ฐ์ฒด์ value ๊ฐ iterable ํ๊ฒ ๋ฆฌํด๋๋ค. ๋ฌผ๋ก object ๋, Object.keys(obj) ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด forEach() ๋ฅผ ์ ์ฉํ ์ ์์ง๋ง, key ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก iterator ๊ฐ ๋๋ค๋ ์ฐจ์ด์ ์ด ์๋ค. Object์ Map ๋น๊ต 1. Object์ ํค๋ Strings์ด๋ฉฐ(only strings), Map์ ํค๋ ๋ชจ๋ ๊ฐ(any)์ ๊ฐ์ง..
2021.08.25 -
210823 ๊ฐ๋ฐ๊ธฐ๋ก: javascript ๋ก์ง ๋ณ๊ฒฝ์ผ๋ก ์ฝ๋ ์ค์ด๊ธฐ
์ด๊ฑธ ๋ฆฌํฉํ ๋ง์ด๋ผ ๋ถ๋ฅด๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง (์คํ๋ ค ํด๋ฆฐ์ฝ๋์ ๊ฐ๊น๋?), ๋ฐฑ์๋ ๋ก์ง ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ๋๋์ผ๋ก ์ค์๋ค. โ๏ธ Old way ์ฌ๊ธฐ์ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ด์ ๋, MBTI ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ๊ธฐ ์ํด "E, I", "N, S", "F, T", "P, J" ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์๋ ์ ๋ ฌ ๋์ , resultObj ๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด, MBTI ์์๋ฅผ ํ๋์ฝ๋ฉ ํ๋ ํ์์ผ๋ก ๊ตฌํํ๋ค. // old way saveAnswers(resultArray) { let mbti = {} resultArray.forEach(result => { mbti[result] = (mbti[result] || 0) + 1 }) const resultObj = { "IE": '', "SN" : '', "TF"..
2021.08.23 -
210822 ๊ฐ๋ฐ๊ธฐ๋ก: CORS ์ http:// (URI scheme, ์คํด)
โ cors ์ด์ front ๋จ์์ axios ๋ก api ๋ฅผ ํธ์ถํ ๋ CORS ์ด์๊ฐ ๋ฐ์ํ๋ค. back ๋จ(nestjs) ์์ app.enableCors() ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์์์๋ cors ๊ฐ ๋ฐ์ํ์ฌ ์์ํ๋๋ฐ, ์ด์ ๋ front ์์ ํธ์ถ์ url์ ๋ฌธ์ ์๋ค. // wrong way await axios.post("localhost:4000/hospital/postAnswers", { ... }) // right way await axios.post("http://localhost:4000/hospital/postAnswers", { ... }) url ์ http:// ๋ฅผ ๋ถ์ฌ์ฃผ๋ ์๋๋์ ์ฐจ์ด์์ ์๊ฒ ๋๋ค. โ ์์ธ ์๋ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ๋ฉด, http ๋ scheme ์ ํด๋น๋๋ ์์ญ์ผ๋ก ํ๋กํ ์ฝ์..
2021.08.23 -
210821 ๊ฐ๋ฐ๊ธฐ๋ก: ์ฌ์ด๋ํ๋ก์ ํธ ํธ๋ฌ๋ธ์ํ ๊ธฐ๋ก
React router ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด Link ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฐ๋ฐ ์๋ ์ฝ๋์์ ๋ช ์ํ๋๋ก /resultpage ์ฃผ์๋ก ๋ฆฌ๋ค์ด๋ ์ ๋ ๊ฑฐ๋ผ ์๊ฐํ๋๋ฐ, url ์ ๋ณ๊ฒฝ์ด ์์๋ค. ๐ฟ ์ฒซ๋ฒ์งธ ์ผ์ด์ค์ ์ด์ ๋ div ํ๊ทธ์์ ์ ์ธํ onClick() ์ ์์๋ค. ๋ผ์ฐํ ์ฒ๋ฆฌ๊ฐ ๋๊ธฐ ์ด์ ์, onClick() ํจ์๋ฅผ ๋จผ์ ํ๋ฒ๋ฆฌ๋ฉด์ ๋ก์ง์ด ์คํ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋ฐฉํฅ์ผ๋ก ๋ผ์ฐํ ์ฒ๋ฆฌ๊ฐ ์ด๋ค์ง์ง ์์๋ค. ToNextStep(e)}> {answerB} ๐ฟ ๋๋ฒ์งธ ์ผ์ด์ค์ ์ด์ ๋ ํด๋ฆญํ๋ ์์น์ ๋ฌธ์ ์๋ค. ToNextStep(e)}> {answerA} ์ฃผํฉ์ ํ์ด๋ผ์ดํธ ๋ถ๋ถ์ Link ํ๊ทธ์ ์์ญ์ด๊ณ , ๊ทธ ๋ฐ๊นฅ ๋ถ๋ถ์ div ์ ํด๋น (Link ์ ํด๋น๋์ง ์๋) ๋๋ ๋ถ๋ถ์ด๋ค. ๊ฐ๋ฐ ์๋๋ ๋ฒํผ..
2021.08.22 -
210820 ๊ฐ๋ฐ๊ธฐ๋ก: ์๋ฐ์คํฌ๋ฆฝํธ in ์ฐ์ฐ์, Switch~case ๋ฌธ์์์ OR ์กฐ๊ฑด
โ ์๋ฐ์คํฌ๋ฆฝํธ in ์ฐ์ฐ์ : ์๋ชป ์๊ณ ์์๋ ์ switch(true) ๋ถ๊ธฐ๋ฌธ์ ์ฌ์ฉํ๊ธฐ ์ํด case ๊ตฌ๋ฌธ์ in ์ฐ์ฐ์๋ฅผ ์ ์ฉํ๋ค. ๋ฐฐ์ด์ ์ํ ์์๊ฐ์ in ์ฐ์ฐ์ ์์ ๋ช ์ํ์ฌ, ํด๋น ์์๊ฐ ๋ฐฐ์ด์ ์กด์ฌํ๋ฉด true ๋ฅผ , ๊ทธ๋ ์ง ์์ผ๋ฉด false ๋ฅผ ๋ฆฌํดํ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ์๋ ์ฝ๋์์ ์ ์ฉํ In ์ฐ์ฐ์๊ฐ ๋น์ฐํ ์ ๋๋ก ์๋ํ ๊ฒ์ด๋ผ ์๊ฐํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ถ๊ธฐ๋ฅผ ํ์ง ์์๋ค. const result = [] const IE = ["I", "E"] const SN = ["S", "N"] const TF = ["T", "F"] const JP = ["J", "P"] const switchResult = (key) => { // key = "I" || "E" || "S" || "N" ... ..
2021.08.20 -
210817 ๊ฐ๋ฐ๊ธฐ๋ก: nestjs dto (feat. whitelist:true)
๐ whitelist:true ์ผ ๋ DTO์ ์ด๋ ธํ ์ด์ ์ด ๋ฏธ์น๋ ์ํฅ ์ด๋ฐ DTO์ ๋ง๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋์ง ํ ์คํธ๋ฅผ ํด๋ดค๋๋ฐ, ๊ฐ์ด ์ ๋๋ก ๋ค์ด์ค์ง ์์๋ค. export class CreateStudyDto{ title: string; subtitle: string; purpose: string; dateTime: string; curriculum: string; noti: string; apply: string; } ์ด์ ๋ @IsString() ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌ์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด์ ๋ main.ts ์์ validator, ๊ทธ์ค์์๋ whitelist : true ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. app.useGlobalPipes(new ValidationPipe({ whitelist: true, tra..
2021.08.17