inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 주문 서비스에서 주문, 주문 취소 메서드 비즈니스 로직이 엔티티에 있는데 이렇게 엔티티가 비즈니스 로직을 가지는 도메인 모델 패턴과 서비스에서 비즈니스 로직을 처리하는 트랜잭션 스크립트 패턴 중에 실무에서는 보통 어떤 것을 사용하나요? 각각의 장단점이 있는지도 궁금합니다

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
www 댓글 1 좋아요 0 조회수 119

props 질문

해결됨

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

TodoItem 에서 todo값을 props로 넘겨줄때 왜 {...todo} 로 사용하나요? {todo} 는 안되는건가요?

  • react
  • typescript
  • react-query
  • supabase
  • zustand
gmldnjs0402 댓글 2 좋아요 0 조회수 58

로그인시 401 Unauthorized 오류가 뜹니다

미해결

[리뉴얼] React로 NodeBird SNS 만들기

로그인시 401 Unauthorized 오류가 떠서 리덕스 액션을 봤더니 LOG_IN_FAILURE에 error 내용이 비어 있었습니다. routes/user.js const express = require("express"); const bcrypt = require("bcrypt"); const { User, Post } = require("../models"); const passport = require("passport"); const router = express.Router(); router.post("/login", (req, res, next) => { console.log("🧾 req.body:", req.body); passport.authenticate("local", (err, user, info) => { if (err) { console.error(err); return next(err); } if (info) { return res.status(401).send(info.reason); } return req.login(user, async (loginerr) => { if (loginerr) { console.error(loginerr); return next(loginerr); } const fullUserWithoutPassword = await User.findOne({ where: { id: user.id }, attributes: { exclude: ["password"], }, include: [ { model: Post, }, { model: User, as: "Followings", }, { model: User, as: "Followers", }, ], }); return res.status(200).json(fullUserWithoutPassword); }); })(req, res, next); }); router.post("/", async (req, res, next) => { try { const exUser = await User.findOne({ where: { email: req.body.email, }, }); if (exUser) { return res.status(403).send("이미 사용중인 아이디입니다."); } const hashedPassword = await bcrypt.hash(req.body.password, 12); await User.create({ email: req.body.email, nickname: req.body.nickname, password: hashedPassword, }); res.status(201).send("ok"); } catch (error) { console.error(error); next(error); } }); module.exports = router; 세션 쿠키가 잘 전달이 안된건가 싶어서 req.body를 서버 터미널로 찍었더니 req.body: undefined 로 나왔습니다. 로그인 폼에서 데이터를 잘못 넘겨준건가 해서 확인해봤더니 loginForm.js const onSubmitForm = useCallback(() => { console.log(email, password); dispatch(loginRequestAction({ email, password })); }, [email, password]); 데이터도 잘 넘겨준 것 같고 sagas/user.js function logInAPI(data) { return axios.post("/user/login", data); } function* logIn(action) { try { const result = yield call(logInAPI, action.data); yield put({ type: LOG_IN_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ type: LOG_IN_FAILURE, error: err.response.data, }); } } 사가쪽도 문제가 없어보여서 프론트 쪽 문제는 아닌 것 같고 백엔드쪽 문제 같은데 도저히 어디서 문제가 생긴건지 모르겠습니다. app.js const express = require("express"); const cors = require("cors"); const session = require("express-session"); const cookieParser = require("cookie-parser"); const postRouter = require("./routes/post"); const userRouter = require("./routes/user"); const db = require("./models"); const passportConfig = require("./passport"); const passport = require("passport"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); db.sequelize .sync() .then(() => { console.log("db 연결성공"); }) .catch(console.error); passportConfig(); app.use( cors({ origin: "*", credentials: false, }) ); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use( session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, }) ); app.use(passport.initialize()); app.use(passport.session()); app.get("/", (req, res) => { res.send("hello express"); }); app.get("/api", (req, res) => { res.json([ { id: 1, content: "hello", }, { id: 2, content: "hello2", }, { id: 3, content: "hello3", }, ]); }); app.get("/api/posts", (req, res) => { res.json([ { id: 1, content: "hello", }, { id: 2, content: "hello2", }, { id: 3, content: "hello3", }, ]); }); app.use("/post", postRouter); app.use("/user", userRouter); app.listen(3065, () => { console.log("서버 실행 중!"); }); passport/local.js const passport = require("passport"); const { Strategy: LocalStrategy } = require("passport-local"); const { User } = require("../models"); const bcrypt = require("bcrypt"); module.exports = () => { passport.use( new LocalStrategy( { usernameField: "email", passwordField: "password", }, async (email, password, done) => { try { console.log("입력값:", email, password); const user = await User.findOne({ where: { email }, }); console.log("찾은 유저:", user && user.email); if (!user) { return done(null, false, { reason: "존재하지 않는 이메일입니다!" }); } const result = await bcrypt.compare(password, user.password); if (result) { return done(null, user); } return done(null, false, { reason: "비밀번호가 틀렸습니다." }); } catch (error) { console.log(error); return done(error); } } ) ); }; passport/index.js const passport = require("passport"); const local = require("./local"); const { User } = require("../models"); module.exports = () => { passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const user = await User.findOne({ where: { id } }); done(null, user); } catch (error) { console.error(error); done(error); } }); local(); }; 백엔드 코드를 첨부하였습니다. 터미널에 나온 콘솔 내용입니다. local.js파일에서도 콘솔("입력값:","찾은 유저:" )을 찍었는데 터미널에 찍힌 콘솔은 req.body만 찍혔습니다..

  • react
  • redux
  • node.js
  • express
  • next.js
현석 댓글 1 좋아요 0 조회수 123

Docker 설치....

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

맥OS 은 현재 Tahoe 26.2 이고 윈도우의 경우 GPU가 없는 내장형으로 CPU 활용을 해야 하는 상황입니다. 맥의 경우 베타 버전(?)이라 Docker 가 설치가 안될것이라고 하고, 윈도우도 CPU 로 운영시 어떻게 해야하는지 상세한 설명이 없어서 도커 설치부터 ... 몇시간째 애먹고 있는지 모르겠습니다. ㅇ 완전 초보를 위한 설명이라 했는데 .. 컴퓨터 사양이나 상태가 너무 강의자분 위주로만 설명해주시는게 아닌가 싶은데요 ... 이런 필요 사양 설명 같은 부분이.. 자세하게 설명되어 있어야 했던거 아닐지 강의 시작부터 막히니 너무 막막합니다....

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
김진주 댓글 3 좋아요 0 조회수 112

도커 설치 문의드립니다

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

어떤 강의에 대한 질문인지 자세하게 알려주시면 답변을 드리는데 도움이 됩니다. 스크린샷 윈도우키 + 쉬프트키 + S(윈도우) 을 자세히 첨부하시면 답변 드리는데 많은 도움이 됩니다. 동영상 재생 관련 같은 인프런 서비스 관련 문의는 1:1 문의하기를 이용해 주세요 도커 설치중 강사님 완료된 창이랑 다른거 같아서 문의드립니다

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
jman1101 댓글 2 좋아요 0 조회수 70

부모에서 훅 호출하여 자식에게 prop으로 내려주기 vs 자식에서 훅 호출 선생님은 어떻게 생각하시는지 궁금합니다

해결됨

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

map 함수 안에서 자식 컴포넌트가 순회하는 코드가 있다고 할 때, 그 자식 컴포넌트 안에서 훅(ex useEditPost/useDeletePost)을 호출하는 것이 좋을까요? 아니면 부모에서 훅을 한번 호출한 뒤 자식 컴포넌트에 prop으로 내려주는 것이 좋을까요? 전자는 자식마다 호출되어 할당될 것 같아서 메모리 관리에 단점이 있을 것 같고 (추측입니다), 후자는 (훅의 함수를 받아야하는 대상 컴포넌트가 자식 내부에 더 깊은 뎁스에 있다고 할 때) Prop Drilling의 단점이 있을 것 같은데요 선생님은 어떻게 생각하시나요?

  • react
  • typescript
  • react-query
  • supabase
  • zustand
최성준 댓글 1 좋아요 0 조회수 80

/init 와 CLAUDE.md 파일 한글화에 대해 질문

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

안녕하세요. 강의 잘 듣고 있습니다. 두가지 질문이 있어서요 프로젝트 진행중에 새로운 기능이나 변경 사항이 있을때마다 /init를 해주면 좋은가요?(토큰 사용량과는 상관없이) CLAUDE.md 파일 내용은 원래 영어로 되어 있는건에 이번 강의에서 보니깐 한글로 요청해서 하시던데, 클코가 프로젝트를 이해하고 수행하는데 영어와는 차이가 없을까요? (역시 토큰 사용량과 상관없이, 한글 사용해도 클코가 잘 이해하고 잘 따르는지 궁금합니다.)

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
kelo 댓글 1 좋아요 0 조회수 759

gmail 연결 경고가 뜨는데도 메일 데이터를 받아올 수 있나요

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

위와 같이 couldn't connect with these settings라는 에러가 뜨는데도 execute 해보면 데이터를 받을 수 있습니다..이유가 뭔가요??

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
  • 카카오공채-개발
  • 카카오공채-서비스
김상원 댓글 2 좋아요 0 조회수 105

uid 검출

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

uid를 찾을 때, subject랑 contains, 메일 제목이랑 메일 송신자만 있을때 결과가 나오는 것 같습니다. 저는 처음에 text, 메일 내용까지 넣은 후에 노드를 실행시켰는데 아무것도 뜨지 않았는데 왜 그런지 알 수 있을까요??

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
  • 카카오공채-개발
  • 카카오공채-서비스
김상원 댓글 2 좋아요 0 조회수 69

Link 컴포넌트는 그러면 웬만하면 무조건 쓰는편이 좋은가요?

미해결

Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

예를들어 landing 페이지에서 특정 페이지를 prefetching하는데 가져오는 그 페이지내에서 사용되는 데이터가많거나 할경우 prefetch가 독이되는 경우가 있을까요? 아니면 웬만하면 무조건 쓰는게 맞을까요?

  • react
  • typescript
  • next.js
dev_junior 댓글 2 좋아요 0 조회수 124

윈도우 git 설치후 파워쉘에서 버전 검색을 했더니 오류가 뜹니다.

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

git : 'git' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확 한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + git -v + ~~~ + CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 이렇게 떠용. 재설치 해야 하나요?

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
조르바 댓글 2 좋아요 0 조회수 292

부분집합 전역변수 질문

미해결

2026 코딩테스트 올인원 [JAVA]

public class Subsets { List<List<Integer>> ans = new ArrayList<>(); List<List<Integer>> solution(int[] nums, int m) { dfs(nums, m, 0, new ArrayList<>()); return ans; } void dfs(int[] nums, int m, int start, List<Integer> curr) { //base case ans.add(new ArrayList<>(curr)); // 매순간 ans에 추가 //상태 전이 for(int i=start; i< nums.length; i++) { curr.add(nums[i]); dfs(nums, m, i+1, curr); curr.remove(curr.size()-1); } } } ans를 전역변수로 설정하고 for문으로 상태 전이할때마다 ans값을 수정하는 방식으로 구현할때 addAll(dfs(nums, m, i+1, curr));으로 하니 dfs가 void로 리턴돼서 에러가 나는데 위의 코드 블럭과 같이 dfs(nums, m, i+1, curr);로 실행하고 basecase에서만 ans에 curr을 추가하는 방식으로 하면 되는걸까요? 질문 봐주셔서 감사합니다!

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
ming 댓글 2 좋아요 0 조회수 75

31. 객체 업데이트 하기 - 10:15 질문

미해결

React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지

안녕하세요, 평소에 짐코딩님 강의 잘 듣고 있습니다. setForm에서 오브젝트로 title만 업데이트 해주더라도 기존의 description 값은 어떻게 그대로 유지가 되는 걸까요?

  • react
  • React-Context
  • react-router
  • tailwindcss
  • react-query
Jaehyeon Lee 댓글 2 좋아요 1 조회수 82

postgresql의 pgvector 벡터는 어떤가요?

미해결

RAG를 활용한 LLM Application 개발 (feat. LangChain)

안녕하세요. 이번에 회사 내부에서 AI Agent를 도입 예정인데요. 회사 DB는 대부분 postgresql로 구성되어 있는데, postgresql에서 pgvector 벡터 데이터베이스를 제공하더라고요? 사용해도 성능이 괜찮을지.. 혹시 경험이 있을지 궁금해서요. 혹시 주위분들에게 들은 거라도 있으신지 ㅠ

  • vector-database
  • llm
  • langchain
  • rag
  • openai-api
  • 카카오공채-개발
km9311 댓글 2 좋아요 0 조회수 479

Redux DevTools 에서 anonymous가 두 번씩 찍혀요

해결됨

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

안녕하세요 강의 잘 듣고 있습니다! 다름이 아니고 (3.5) Zustand 미들웨어 2 강의를 들으며 실습 중, 알려주신 Redux DevTools 설치 이후 강의와 같이 한번 클릭하여도 anonymous가 두 번씩 찍혀서 노출되는데 제가 다시 확인해봐야 할 부분이 있을까요? 감사합니다.

  • react
  • typescript
  • zustand
뚜루뚜루 댓글 2 좋아요 0 조회수 86

OperationEx3에서 꼭 boolean을 써야 하나요?

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 김영한님은 이렇게 푸셨는데 저는 이렇게 풀었습니다. 이게 문제가 있는 건지 알고 싶습니다. package operator.ex; public class OperationEx3 { static void main(String[] args) { int score = 88; System.out.println(80 <= score && score <= 100); } }

  • java
  • 객체지향
dhada0137 댓글 1 좋아요 0 조회수 87

강의 잘 듣고 있습니다.

해결됨

[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)

안녕하세요. 바이브코딩 강의 너무 잘 듣고 있습니다. 혹시 강의에서 완성된 코드의 github 주소 혹은 완성된 결과 프로젝트를 받을 수 있을까요? 매번 자료를 다운로드 받는 게 다소 번거롭기도 하고, 완성된 결과를 비교하면서 공부하고 싶어서 그렇습니다...! ㅠ

  • react
  • next.js
  • cursor
  • 프롬프트엔지니어링
  • 바이브코딩
수수수 댓글 2 좋아요 0 조회수 121

파일명 질문

미해결

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

안녕하세요 선생님 선생님 리액트 기초 강의를 들었는데 제 기억에서는 그 리액트 파일명을 대문자로 써야한다? 이렇게 들었던 거 같은데 (아니면 죄송) 왜 여기에서는 파일명을 소문자로 쓸까요? 그리고 파일명하고 그 내보내는 함수를 다르게 쓰는 이유가 있나요? 그리고 왜 화살표함수로 안만들고 function으로 할까요? 그리고 export를 아래에 안쓰는 이유가 있을까요? 수업시간에 설명했는데 제가 놓친거면 죄송합니다 ㅠㅠ

  • react
  • typescript
  • react-query
  • supabase
  • zustand
김성관 댓글 2 좋아요 0 조회수 52

빠른 메모리 저장

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

강의 중 프롬프트 창에 #을 입력해서 빠르게 등록을 하는데, 저의 경우는 #을 입력해도 # to memorize가 보이지 않습니다

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
크리스추 댓글 1 좋아요 1 조회수 94

claude 스타터킷 개발 설정

해결됨

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

스크린샷에서 레이아웃부터 어떻게 설정하면 되는거죠?

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
read.eun77 댓글 2 좋아요 0 조회수 109

인기 태그

인프런 TOP Writers

주간 인기글