caput3545
@caput3545
Reviews Written
-
Average Rating
-
Posts
Q&A
Reflect.defineMetadata is not a function ์๋ฌ
์๋ ํ์ธ์ ์ ํธ๋.์์ง ํด๊ฒฐ์ด ์๋์ จ๊ตฐ์,,์ฌ๋ ค์ฃผ์ ๊นํ๋ธ ์ฝ๋ ํ์ธํด๋ณด๊ณ ๋ค์ ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค.
- 0
- 1
- 338
Q&A
๋ชฝ๊ณ db ์ฐ๊ฒฐ์ด ์๋ฉ๋๋ค.
์๋ ํ์ธ์ data big๋. ํน์ npm install ํ๋ ๊ณผ์ ์์ mongo db ๊ด๋ จํ์ฌ ๋ฒ์ ๊ฒฝ๊ณ ๊ฐ ๋จ์ง๋ ์์์๋์?๋ฒ์ ๊ฒฝ๊ณ ๊ฐ ๋ง์ฝ ๋ด์๋ค๋ฉด, ์๋์ ์ฝ๋๋ฅผ ์ ๋ ฅํ์ฌ mongo db์ ๋ฒ์ ์ ๋ฐ๊ฟ์ฃผ์ธ์.npm install mongoose@6.2.2 --save ์ดํ์๋ ํด๊ฒฐ๋์ง ์์ผ์ จ๋ค๋ฉด, ์๋ก์ด ์ง๋ฌธ๊ธ์ ์ง๊ธ ์ด ์ง๋ฌธ๊ธ์ ๋งํฌ๋ฅผ ๋ณต์ฌํ์ฌ ๋จ๊ฒจ์ฃผ์ธ์! ๋ฐ๋ก ํ์ธํ๊ณ ๋ต๋ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 803
Q&A
๋ค์ด๋ฒ api ์์ฒญ ๊ด๋ จ ์ง๋ฌธ ์์ต๋๋ค
์๋ ํ์ธ์ ํ์์ค๋.๊นํ๋ธ์ ์ฌ๋ ค์ฃผ์ ์ฝ๋์ ์ฌ๋ ค์ฃผ์ ํ ์คํธ ๊ฒฐ๊ณผ๋ง์ผ๋ก ์ ํํ ์ค๋ฅ๊ฐ ์ด๋ ์๋์ง ํ์ธํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ฐ์ฅ ํฌ๊ฒ ์์ฌ๋๋ ๋ถ๋ถ์ api ํธ์ถ ํค๋๋ฅผ ์์ฑํด์ฃผ๋ ๋ถ๋ถ์์, process.env.[KEY] ์ ๊ฐ์ ํ์์ผ๋ก .env ํ์ผ์ ์๋ ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์์ ์ ๋๋ก ๊ฐ์ด ๋ถ๋ฌ์์ง์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ถ๋ถ์ console.log๋ก ํ ๋ฒ ํ์ธํด์ฃผ์๊ณ , ๊ทธ๋๋ ํด๊ฒฐ๋์ง ์๋๋ค๋ฉด ๋ค์ ํ ๋ฒ ์ง๋ฌธ๊ธ๋ก ์์ฑํด์ฃผ์๋ฉด ๋ฐ๋ก ๋ค์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๋ํ, API KEY์ SECRET KEY๋ ํ์์ค๋์๊ฒ๋ง ์ ๊ณต๋๋ ํค๋ก, ๊ณต๊ฐ๋ ์น์ ํด๋น ํค๋ฅผ ๋ ธ์ถ์์ผฐ์ ๋ ํ์ธ์ด ์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ง๋ฌธ๊ธ์์ ํด๋น ๋ถ๋ถ์ ์ญ์ ํ์๊ณ , ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ private์ผ๋ก ๋ณ๊ฒฝํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
- 1
- 3
- 495
Q&A
sync/async fetcher ํฌ๋กค๋ง ์ ์ฒด๊ฐ ์๋ฉ๋๋ค.
์๋ ํ์ธ์ ๊ตฌ์์ ๋.์ง๋ฌธํด์ฃผ์ ์ฒซ๋ฒ์งธ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์คํํด๋ณธ ๊ฒฐ๊ณผ ๋ค์ด๋ฒ์ ๊ตฌ๊ธ์ ๋ชจ๋ ์์ค์ฝ๋๊ฐ ํฌ๋กค๋ง ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.import requests import time def fetcher(session, url): with session.get(url) as res: return res.text def main(): urls = ["https://www.naver.com", "https://www.google.com"] with requests.Session() as session: result = [fetcher(session, url) for url in urls] print(result) if __name__ == "__main__": main()์ง๋ฌธ์ ์กฐ๊ธ ๋ ์์ธํ๊ฒ ์์ฑํด์ฃผ์๋ฉด, ๋ต๋ณํ๊ธฐ ์กฐ๊ธ ๋ ์์ํ ๊ฒ ๊ฐ์ต๋๋ค.๋๋ถ์ด ์ฝ๋๋ ์ธํ๋ฐ์ ์๋ํฐ์ ํฌํจ๋์ด ์๋ [์ฝ๋ ์ ๋ ฅ๊ธฐ]๋ก ์ ์ฒด ์ฝ๋๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.์์ธํ ์ง๋ฌธ ๋ด์ฉ ์๋ก์ด ๊ฒ์๊ธ๋ก ์์ฑํด์ฃผ์๋ฉด, ๊ณง๋ฐ๋ก ๋ต๋ณํด๋๋ฆฌ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค :)
- 0
- 1
- 323
Q&A
ํน์ ์ ์ฒ๋ผ s3์ ์ ๋ก๋ํ ๋ ์๋ฌด ์ด๋ฏธ์ง๋ ์ ์ฌ๋ผ์๋ ๋ถ๋ค์ด ์์ผ๋ฉด ๋ด์ฃผ์ธ์
์๋ ํ์ธ์ ํ์น๋น๋.์ข์ ์ ๋ณด ๊ณต์ ๊ฐ์ฌํฉ๋๋ค.ํญ์ ํ์น๋น ๋์ ์ฑ์ฅ์ ์์ํ๊ฒ ์ต๋๋ค.๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :)
- 3
- 3
- 756
Q&A
๋ชฝ๊ตฌ์ค ์ฐ๊ฒฐ ์ค๋ฅ
์๋ ํ์ธ์ ๋ค๋ฒ๋ ์ดํธ๋.์ง๋ฌธ ํ์ธํ์ต๋๋ค. ๊ธ์ผ ๋ด๋ก ๋ต๋ณํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค :)
- 0
- 1
- 511
Q&A
existsByEmail ์์ Type '{_id: any; }' is not assignable to type 'boolean'. ์๋ฌ ๋ฐ์
์๋ ํ์ธ์ bugi๋.์์ฑํด์ฃผ์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ๋จ๊น๋๋ค. const result = await this.catModel.exists({ email }); return result as boolean;์ ์ฝ๋์ ๊ฐ์ด ์์ฑํ์ ๋ ๋๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ค๊น์?
- 3
- 4
- 1.5K
Q&A
passport-local ์ฌ์ฉ.
3๋ฒ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ๋ 2๋ฒ ์ง๋ฌธ ๋ต๋ณ์ ํฌํจ์ด ๋์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. passport.js๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋ฐฉ์์ ๋ํ ์ํ์ฝ๋ฉ์ ์ข์ ๊ฐ์๊ฐ ์์ด ์๋์ ๋งํฌ ์ฒจ๋ถํฉ๋๋ค. https://opentutorials.org/course/3402๋ ๊ถ๊ธํ ์ฌํญ์ด ์์ผ์๋ค๋ฉด ์๋ก์ด ์ง๋ฌธ๊ธ๋ก ์์ฑํด์ฃผ์๋ฉด ๋ต๋ณํด๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ถ์์๋ ๊ฐ์ ๋ค์ผ์๋ฉฐ ๊ณต๋ถํ์๋ ์ด์ ์ด ๋ฉ์์ฉ๋๋ค..! ํญ์ ์์ํ๊ฒ ์ต๋๋ค ๐ฆฆ
- 1
- 3
- 565
Q&A
passport-local ์ฌ์ฉ.
passport local์ ๋ก๊ทธ์ธ ๋๋ง ์ฌ์ฉ๋๋ ์ ๋ต์ธ๊ฐ์? ๊ทธ๋ฌ๋ฉด jwt๋ฑ์ ์ฌ์ฉ์ ์ ์์ ์ ์ง์ํค๋ ์ ๋ต๊ณผ๋ ๋ค๋ฅด๋ค๊ณ ๋ด์ผํ๋์? ๊ทธ๋ ์ง ์์ต๋๋ค. passport๋ ์ฌ๋ฌ ์ธ์ฆ ๋ฐฉ์๊ณผ, ์ ์ ์ ๋ณด๋ฅผ ์ธ์ ์ ์ ์ฅ, ํด๋น ์ธ์ ์ ํ๋ณํ๋ ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํฉ๋๋ค. passport์ ์ธ์ฆ์ ํต๊ณผํ๋ค๋ฉด passport.serializeUser ๋ฅผ ์ด์ฉํ์ฌ ํด๋น ์ ์ ์ ๋ณด๋ฅผ ์ธ์ ์ ์ ์ฅ, ์ ์ ์ํ๋ฅผ ์ ์งํ ๋๋ passport.deserializeUser๋ฅผ ํตํด request.user์ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ๋ง์ฝ request.User๊ฐ ์๋ค๋ฉด ์ด๋ ๋ก๊ทธ์ธ์ด ๋์ง ์์ ์ํ, ํน์ ๋ก๊ทธ์ธ์ด ๋ง๋ฃ๋ ์ํ๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด์ ๋ฐ๋๋ก request.User๊ฐ ์๋ค๋ฉด ๋ก๊ทธ์ธ์ด ๋์ด์๋ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ jwt๋ฅผ ์ด์ฉํ์ฌ ์ฟ ํค์ token ๊ฐ์ ์ ์ฅํ๊ณ , token ๊ฐ์ ๊ฒ์ฆํ๋ฉฐ ์ ์ ์ํ๋ฅผ ํ๋ณํ๋ JWT์ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค.
- 1
- 3
- 565
Q&A
passport-local ์ฌ์ฉ.
์๋ ํ์ธ์ Anthony Jo๋.์์ฑํด์ฃผ์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ๋จ๊น๋๋ค. ์ ๊ฐ ๋๋ผ๊ธฐ์, ๊ตณ์ด passport local ์ ๋ต์ ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ณต์ ๋ฌธ์์์ ๊ตณ์ด ์ด๋ฅผ ์ฌ์ฉํ ์ด์ ๊ฐ ์์๊น์?์ฐ์ , Passport.js ๋ Node.js๋ฅผ ์ํ ์ธ์ฆ ๋ฏธ๋ค์จ์ด์ ๋๋ค. ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด ๋ก๊ทธ์ธํ๋ ๋ฐฉ์์ ํฌํจํด์, ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ํธ์ํฐ ๋ฑ์ ํตํ ์ฌ๋ฌ๊ฐ์ง ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ณต์ ๋ฌธ์์์ passport๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฅผ ์์ฑํ ์ ํํ ์ด์ ๋ ์ ์ ์๊ฒ ์ง๋ง, ์ ์ ๊ฐ์ธ์ ์ธ ์์์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ผ ๊ฒ ๊ฐ์ต๋๋ค.๋ค๋ฅธ ์ธ์ฆ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋๋ฐ์ ์์ด์์ ํธ์์ฑ : passport.js์์๋ 500๊ฐ๊ฐ ๋๋ ์ธ์ฆ๋ฐฉ์์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๋ง์ฝ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํตํด ์ธ์ฆํ๊ณ ์๋ ์๋น์ค์์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ผ๋ก ๋ณ๊ฒฝ์ ํ ๋์, passport.js์ strategy๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ฝ๋๋ฅผ ์กฐ๊ธ๋ง ์์ ํด์ฃผ๋ฉด ๋ก์ง์ ํฐ ๋ณํ ์์ด ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ง์ผ passport.js๋ฅผ ์ฌ์ฉํ์ง ์์์ ๋์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ผ๋ก ๋ณ๊ฒฝ์ ํด์ผํ๋ค๋ฉด, ์ธ์ฆ ๋ถ๋ถ์ ๋ชจ๋ ๋ฏ์ด๊ณ ์ณ์ผ ํฉ๋๋ค.๋ง์ ์๋น์ค์์ ์ด์ฉํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ๊ณต์ ๋ฌธ์์๋ ์์ฑ๋์ด ์๋ฏ์ด, ์๋ง์ ์๋น์ค์์ passport.js๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์ชฝ์ ๊ฐ๋ฐํ์์ต๋๋ค. ๊ทธ๋ฐ๋งํผ, ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ๋ฐฉ์์ผ๋ก ์์ ๋ฅผ ์์ฑํ๋๊ฒ ์กฐ๊ธ ๋ ์๋ฏธ๊ฐ ์์ง ์์์๊น ์๊ฐํฉ๋๋ค.๋ง๋ถ์ฌ์, ํด๋น ๊ฐ์์์ passport local์ ์ฌ์ฉํ์ง ์๊ณ JWT๋ฅผ ์ฌ์ฉํ ์ธ์ฆ๋ฐฉ์์ ์ฌ์ฉํ ์ด์ ๋, passport local์ ๊ทผ๋ณธ์ ์ธ ์๋ฆฌ๋ JWT๋ฅผ ์ฌ์ฉํ ์ธ์ฆ๋ฐฉ์๊ณผ ๋์ผํฉ๋๋ค. passport.js๋ ์ด ๊ณผ์ ์ ์กฐ๊ธ ๋ ๊ฐํธํ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๊ฐ๋ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ์ฒ์๋ถํฐ ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์๊ฐ์ ๋ถ๋ค๊ป ์กฐ๊ธ ๋ ์ ์ตํ ๊ฒ ๊ฐ์์ ๊ฐ์๋ฅผ ์ด๋ ๊ฒ ๊ตฌ์ฑํ๊ฒ ๋์์ต๋๋ค.๋ค์ ์ง๋ฌธ๋ค์ ์๋ ๊ธ์ ๋ต๋ณํ๊ฒ ์ต๋๋ค.
- 1
- 3
- 565




