[์ •๋ณด] LLM ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค๋Š” ์ „๊ธฐ์š”๊ธˆ์„ ๋งŽ์ด ๋ฐœ์ƒ ์‹œํ‚จ๋‹ค.
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
08์›” ๊ด€๋ฆฌ๋น„ ์ •์‚ฐ ๊ฒฐ๊ณผ ์ „์›”๋Œ€๋น„ 7๋งŒ์›์˜ ์ฆ๊ฐ€์„ธ๋ฅผ ๋ณด์˜€๋‹ค.๋งค 1์‹œ๊ฐ„ ๋งˆ๋‹ค ํ‰๊ท  200๊ฑด ์ด์ƒ์˜ ๋ชจ๋ธ์„ ํ•™์Šต ๋ฐ ์ถ”๋ก  ๊ณผ์ •์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์ด์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™๋‹ค.์—์–ด์ปจ์„ 24์‹œ๊ฐ„ 1๋…„์— 8๊ฐœ์›”์„ ํ‹€์–ด๋„ 16๋งŒ์ด๋˜ ๊ด€๋ฆฌ๋น„๊ฐ€ 25๋งŒ์›์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๋‹ค๋‹ˆ ๋†€๋ž„ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.
[์ƒ๊ฐ] ์ฃผ์‹๊ณผ ๊ณต๋ถ€
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
์ฃผ์‹์„ ํ•˜๋ฉด์„œ ๊ณต๋ถ€(๋ฐฐ์›€)์— ๋Œ€ํ•˜์—ฌ ์ƒ๊ฐ๋‚œ ๊ฒƒ์ด ์žˆ์–ด์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด ๋ณธ๋‹ค. ์ฃผ์‹์€ ํ•˜๋‚˜์˜ ์ƒ๋ช…์ฒด์™€ ๊ฐ™์•„์„œ ๋ฐฉํ–ฅ์„ฑ์„ ์˜ˆ์ธกํ•˜๊ธฐ ํž˜๋“ค๋ฉฐ ๋Œ€์‘์˜ ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด์•„์•ผ ํ•œ๋‹ค.์ƒ๋ช…์ฒด๋ผ ํ•จ์€ ์‹ฌ๋ฆฌ์  ์ƒํƒœ๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ๊ณ ์‹ถ๋‹ค ํŒ”๊ณ ์‹ถ๋‹ค์˜ ๊ฐ์ •์ด ์žˆ๋‹ค.์ด์— ๋Œ€ํ•œ ์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์œผ๋กœ ๋งค๋ฌผ๋Œ€๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด ์„ ๋“ค์„ ๋ŒํŒŒ ์‹œ ์ƒ์Šน ๋ฐ ํ•˜๋ฝ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์ด ์›๋ฆฌ์— ์ฐฉ์•ˆํ•จ์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ๋งค๋ฌผ๋Œ€์— ์˜ค๋ฉด ๋งค์ˆ˜ ๋งค๋„ํ•˜๋Š” ์ „๋žต์œผ๋กœ ์ฃผ์‹์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ„ํ•  ๋งค์ˆ˜ ๋งค๋„๋ฅผ ํ†ตํ•˜์—ฌ ์‹ฌ๋ฆฌ์  ์ €ํ•ญ์„ ๋„˜๊ฑฐ๋‚˜ ๋„˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.์ƒ๋‹จ ์ €ํ•ญ์„ ์—์„œ 5% ์ „ํ›„๋กœ ๋ถ„ํ•  ๋งค๋„๋ฅผ ๊ณ„ํšํ•œ๋‹ค๋ฉด ์‹ฌ๋ฆฌ์  ์ €ํ•ญ์„ ์„ ๋งž๊ณ  ์ฃผ๊ฐ€๊ฐ€ ํ•˜๋ฝํ•˜์—ฌ๋„ ์ ˆ๋ฐ˜ ์ด์ƒ์€ ๋งค๋„์— ์„ฑ๊ณต ๊ฐ€๋Šฅํ•˜๋‹ค. ์ƒ์Šน๋ŒํŒŒ ์‹œ ๋” ๋งŽ์€ ์ด์ต์„ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€..
[AI] ๊ณตํฌ ํƒ์š• ์ง€์ˆ˜ ๊ธฐ๋ฐ˜ ์ธ๊ฐ„์ง€ํ‘œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
CNN ๊ณตํฌ ํƒ์š• ์ง€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ฌ 3์›”์ดํ›„ ๋ฐœ์ƒ๋œ ๊ฒŒ์‹œ๊ธ€ 5๋งŒ๊ฑด ์ด์ƒ์„ AI ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค.์žฌ๋ฏธ๋กœ ๋ณด๋Š” ์ง€์ˆ˜์ด๋‹ˆ ๊ฒŒ์‹œํŒ ๋ถ„์œ„๊ธฐ ๊ณผ์—ด ์–‘์ƒ ์ฒดํฌ ์ •๋„๋กœ๋งŒ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๋ฌผ๋“ค์˜ ํ‰๊ฐ€์น˜๋ฅผ ๊ฐ€์ค‘ํ‰๊ท ํ•˜์—ฌ ๋งค ์ •๊ฐ์— ๋ฏธ์ฃผ๋ฏธ ์ง€์ˆ˜(0~100)๊ฐ€ ๊ฐฑ์‹  ์‚ฐ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒŒ์‹œ๊ธ€๋“ค์˜ ์˜จ๋„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฝ์žฅ์—์„œ ๋งŽ์ด ๋‚˜์˜ค๋Š” ๊ฒŒ์‹œ๋ฌผ๋“ค์ด ์ถœํ˜„ํ•˜๋ฉด ์ง€์ˆ˜๊ฐ€ ํ•˜๋ฝ๋ฉ๋‹ˆ๋‹ค.์‹ค์ œ ๊ณตํฌํƒ์š• ์ง€์ˆ˜๋ž‘ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ณผ๋„ํ•œ ๊ฒŒ์‹œํŒ ๋ถ„์œ„๊ธฐ๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜, ๋Œ€๊ณตํ™ฉ ์ง์ „ ๊ตฌ๋‘๋‹ฆ์ด ์†Œ๋…„ ์‹ ํ˜ธ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์•Œ์•„๋ณด๋Š”๋ฐ ๋„์›€์ด ๋˜์ง€์•Š์„๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค.  ์ง€ํ‘œ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ๊ณตํฌ ํƒ์š• ์ง€์ˆ˜์™€์˜ ์ƒ๋Œ€์ ์ธ ์ˆ˜์น˜๋กœ ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋ฝ์žฅ : ๊ณผํ•œ ๊ณตํฌ ์‹ฌ๋ฆฌ ๋ฐ˜์˜(๊ณตํฌํƒ์š• ์ง€์ˆ˜ > ๋ฏธ์ฃผ๋ฏธ ์ง€์ˆ˜)ex) [FEAR/32] ๋‚ด์ผ ๋‚˜์Šค๋‹ฅ ..
[์ •๋ณด] MongoDB Replica Set ๊ตฌ์„ฑ๋ฒ•(์šฐ๋ถ„ํˆฌ 3EA)
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
์šฐ๋ถ„ํˆฌ ํ˜ธ์ŠคํŠธ 3EA์— ๋ฉ”์ธ ๋…ธ๋“œ ๋ฐ ์กฐ์ธ๋…ธ๋“œ 2๊ฐœ๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์„ค๋ช…ํ•œ๋‹ค. ๊ฐ ๋ชฝ๊ณ DB ์„ค์ •ํŒŒ์ผ์— ๋ ˆํ”Œ๋ฆฌ์นด ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹คvim /etc/mongod.confreplication: replSetName: "rs0" ๋ชฝ๊ณ DB๋ฅผ ์žฌ์‹œ์ž‘ ํ•œ๋‹คsystemctl restart mongod ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๋ชฝ๊ณ DB ์ ‘์† ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.rs.initiate( { _id : "rs0", members: [ { _id: 0, host: "192.168.0.131:27017" }, { _id: 1, host: "192.168.0.132:27017" }, { _id: 2, host: "192.168.0.133:27017" } ]}) ์ ์šฉ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋‹ค.rs.conf()rs..
[Next.js] ๊ฐœ๋ฐœ ์‹ค๋ ฅ ์ƒ์Šน์— ๋„์›€๋˜๋Š” ์œ ํŠœ๋ธŒ ์ถ”์ฒœ
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
์„ค๋ช… ํ•™์Šต์— ์žˆ์–ด์„œ ์•ž๋งŒ ๋ณด๊ณ  ๋‹ฌ๋ฆฌ๋Š” ๊ฒƒ ๋ณด๋‹ค ๋’ค๋ฅผ ๋Œ์•„๋ณผ ๋•Œ ์‹ค๋ ฅ ์ƒ์Šน์ด ๋งŽ์ด ์ผ์–ด ๋‚œ๋‹ค. Next.js์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ฌด์กฐ๊ฑด ๋”ฐ๋ผํ•˜๋ฉฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ๋Š” ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด์„œ ํฐ ์‹ค๋ ฅ์ƒ์Šน์„ ์–ป์ง€๋งŒ ์ด๋‚ด ์ƒ์Šน์ด ๋”๋”˜ ๊ตฌ๊ฐ„์ด ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋™์ž‘์€ ๋˜์ง€๋งŒ ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค. ๋‚˜๋„ Next.js๋กœ ๊ฐœ๋ฐœ์— ์†์„ ๋Œ„์ง€ 1๋…„์ด ๋„˜๋Š” ์‹œ์ ์—์„œ ๋‹ค์‹œ ๊ฐœ๋…์„ ์žก๊ฒŒ ๋˜๋Š” ์˜์ƒ์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ๊ณต์œ ํ•œ๋‹ค. ์˜์ƒ์—์„œ ์•Œ๊ฒŒ๋œ ๋‚˜์˜ ์ƒˆ๋กœ์šด ๊ด€์ ์€ Next.js๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง(SSR)์ด๋ฉฐ ๋ช…์‹œ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง(CSR)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. ๋‚˜๋Š” ๋ฌด์กฐ๊ฑด CSR๋กœ ๊ฐœ๋ฐœ์„ ๋‹ค ๋•Œ๋ ค ๋„ฃ์–ด์„œ fetch์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†ก ์ˆ˜์‹ ์„ Server Action์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค. ๊ทธ..
[Auth.js] [auth][error] AccessDenied: AccessDenied. Read more at https://errors.authjs.dev#accessdenied
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
๋ฌธ์ œ์ [auth][error] AccessDenied: AccessDenied. Read more at https://errors.authjs.dev#accessdenied Auth.js | ErrorsAuthentication for the Webauthjs.dev  ํ•ด๊ฒฐ๋ฐฉ๋ฒ•OAuth์˜ ๊ฒฝ์šฐ SignIn ๋กœ์ง์„ ํƒ€๊ณ  ํšŒ์›๊ฐ€์ž…์ด SignUp ์—†์ด ์ง„ํ–‰๋œ๋‹ค.true false๋กœ SignIn ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š๋„›์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.// auth.tsimport authConfig from "@/auth.config";import { PrismaAdapter } from "@auth/prisma-adapter";import db from "@/lib/db";import { getUserById } from "@/data/..
[Auth.js] ๋กœ๊ทธ์ธ ์งํ›„ useSession undefined ํ˜„์ƒ ํ•ด๊ฒฐ
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
๋ฌธ์ œ์ SessionProvider๋กœ ๊ฐ์‹ธ๊ณ  useSession์„ ์‚ฌ์šฉํ•  ์‹œ ์ตœ์ดˆ ๋กœ๊ทธ์ธ ์ƒ์—์„œ๋Š” ๋™์ž‘์œผ๋ฉฐ Hard Reload ์‹œ ๋™์ž‘ํ•˜๋Š” ํ˜„์ƒ์ด ์žˆ์—ˆ๋‹ค. ํ•ด๊ฒฐ์ „ํ•ด๊ฒฐํ›„ ๋ฒ„์ „์ •๋ณด "next": "14.2.4", "next-auth": "^5.0.0-beta.19", ํ•ด๊ฒฐ๋ฐฉ๋ฒ•useSession๋Œ€์‹  ์•„๋ž˜์˜ hook์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•œ๋‹ค.๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ์œ ์ €๋ถ„(bocarw121)๊ป˜์„œ ๋งŒ๋“ค์–ด ์ฃผ์…จ๋‹ค.์•„๋ž˜ Github Issue ์ฐธ๊ณ  - ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ณ ํ†ต๋ฐ›๊ณ  ์žˆ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ฅธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ๋Š๋‚Œ์ด๋‹ค. use-current-session.ts// This hook doesn't rely on the session providerexport const useCurrentSession = () => { ..
[์ •๋ณด] Ubuntu Server์—์„œ Chrome Selenium ์‚ฌ์šฉํ•˜๊ธฐ
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
์„ค์น˜ํ•˜๊ธฐwget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb# ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ .deb ํŒŒ์ผ์„ ์„ค์น˜ sudo dpkg -i google-chrome-stable_current_amd64.deb # ๋งŒ์•ฝ ์˜์กด์„ฑ ๋ฌธ์ œ๋กœ ์„ค์น˜๊ฐ€ ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ ์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์„ค์น˜๋ฅผ ์™„๋ฃŒ sudo apt --fix-broken install  ์†Œ์Šค์ฝ”๋“œ์šฐ๋ถ„ํˆฌ ๊ธฐ๋ฐ˜ headless Selenium ๋“œ๋ผ์ด๋ฒ„ ์†Œ์Šค์ฝ”๋“œ ์ด๋‹ค.import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Service## WINDOWSfrom webdriver_manage..
[์ •๋ณด] ๋ฉ”์ผ์„œ๋ฒ„ ์‰ฝ๊ฒŒ์„ค์น˜ํ•˜๊ธฐ docker mailserver
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
์ฃผ์˜์‚ฌํ•ญ๋‹ค์Œ์˜ ์ด๋ฉ”์ผ ์„œ๋ฒ„์˜ ํฌํŠธ๊ฐ€ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.SSL/TLS mail protocol - 465 587 993CertBot - 80 443     How to Setup Docker Mailserver on Debian 12 and Send Cold/Warm EmailsSetting up a mail server using Docker Mailserver can streamline the process and make maintenance easier. In this guide, I'll walk you through the step-by-stepwebshanks.com
[Auth.js] Error: NEXT_REDIRECT ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
ยท
๐Ÿค–์ •๋ณด๋ณด์•ˆ/๐Ÿ’ 1๋ถ„์ง€์‹
๋ฌธ์ œ์ Error: NEXT_REDIRECT ๋ฐœ์ƒํ•˜๋ฉด์„œ ๋กœ๊ทธ์ธ ์‹œ ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜์ง€์•Š์œผ๋ฉฐ ์ƒˆ๋กœ๊ณ ์นจ์‹œ ์ด๋™๋จ๋ฌธ์ œ์˜ ์†Œ์Šค์ฝ”๋“œ์—์„œ๋Š” return์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. signIn ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š”๋ฐ return์ด ์‹คํ–‰๋˜์–ด ๋ฌด๋ฐ˜์‘์ธ ์ƒํ™ฉ์ด๋‹ค"use server";import { signIn } from "@/auth";import { DEFAULT_LOGIN_REDIRECT } from "@/route";import { z } from "zod";import { AuthError } from "next-auth";import { SignInSchema } from "@/schemas";export const login = async (values: z.infer) => { const va..