inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

구글이 이메일 변경을 허용하는 이유

미해결

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

이번에 설계 1편에서 자연 키와 대리 키 부분을 학습하면서, 최근 구글이 이메일 변경을 부분적으로 검토하고 있다는 뉴스가 떠올랐습니다. 예전에는 이메일 변경이 거의 불가능했던 이유가 이메일을 자연 키처럼 사용해왔기 때문이라고 이해해도 될까요? 그리고 지금에 와서는 어떤 구조적 변화나 트레이드오프를 통해 이메일 변경이 가능해졌는지도 궁금합니다.

  • sql
  • mysql
  • dbms/rdbms
  • 소프트웨어-설계
  • SQLD
댓글 1 좋아요 0 조회수 130

강의자료문의

해결됨

누구보다 빠르게 배우는 Springboot + React RestAPI 게시판 만들기

react ui 만들기 강의에서 헤더의파일같은거는 강의자료에 있다고 하셨는데 강의자료는 어디에 있나요?? 노션에도 없던데

  • react
  • java
  • kotlin
  • spring-boot
  • jpa
댓글 2 좋아요 1 조회수 91

HTTP Request 관련 문의

해결됨

원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)

강의를 보면 http 요청 결과를 기다리는 것을 wait에 시간을 주는 것으로 처리가 되어 있는데, 동기적으로 요청에 대한 응답이 오면 다음 노드를 실행하도록 구현은 어려운가요?

  • python
  • youtube-api
  • n8n
  • ai-활용-(ax)
김기훈 댓글 2 좋아요 0 조회수 50

왜 15강 18강이 똑같나요?

미해결

100% 비개발자 바이브 코딩: 앱 200개로 월 140만 수익 노하우

영상이 똑같습니다........

  • python
  • flutter
  • chatgpt
  • claude
  • 바이브코딩
global.insung 댓글 2 좋아요 1 조회수 122

질문입니다

미해결

안티그래비티 CLI 하네스 엔지니어링

안녕하세요 좋은 강의감사합니다 번외적인 질문이지만 CLI가 아니라 CURSOR같은 에이전트를 활용해도 문제는 없을까요

  • python
  • vscode
  • gemini
Cho hyunik 댓글 1 좋아요 0 조회수 100

구글계정 사용중지

해결됨

원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)

안녕하세요. 학습후 영상제작하여 자동으로 유튜브 업로드까지 해서 2일 운영했는데요. 구글계정 사용중지가 되었습니다. Gpt에서 확인했을때 자동화 업로드 감지시 계정 중단사유라고 하던데요. 혹시 이부분에 대해서 대응방법이 있을까요? 이의신청은 했지만 어떻게 될지는 모르겠습니다.

  • python
  • youtube-api
  • n8n
  • ai-활용-(ax)
김싼타 댓글 2 좋아요 0 조회수 513

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

반드시 C드라이브에 설치해야하나요?

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

D드라이브가 용량이 더 커서 파이썬이나 VScode를 D드라이브에 설치하려고 하는데 상관없나요?

  • python
  • 설치
the1200 댓글 1 좋아요 0 조회수 101

INSERT INTO 관련 질문

미해결

김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] insert into 할때 괄호로 열을 지정하지않고 생략한다면 table을 생성할때 작성한 열 순서대로만 넣어야하는건가요?? 강의에 열의 순서라는게 그걸 뜻하는게 궁금해요

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
escho94 댓글 1 좋아요 0 조회수 124

수강기간 변경 요청

해결됨

[백문이불여일타] 데이터 분석을 위한 기초 SQL

안녕하세요. 앱으로 수강을 해서 수강 도중에 기간이 무제한으로 바뀐 줄 모르고 들었는데요. 12월 29일자로 만료가 되긴했는데 혹시 수강기한 변경이 가능하다면 변경해주시면 감사하겠습니다!

  • sql
  • mysql
  • 카카오공채-서비스
solsolala66 댓글 2 좋아요 0 조회수 130

Commit 응답받기 전 네트워크 문제가 발생하면

미해결

Real MySQL 시즌 1 - Part 1

안녕하세요. 좋은 강의 감사합니다. 강의와 직접적으로 관련 있는 내용은 아니지만 궁금한 점이 있어 질문드립니다. 클라이언트에서 MySQL 서버로 아래와 같이 요청할 텐데 BEGIN 쿼리 COMMIT 3번에서 MySQL 서버가 클라이언트의 Commit 요청을 받고 처리 완료 후, 클라이언트에게 응답하려는 순간 네트워크가 단절되면 Commit은 되었지만 클라이언트는 실패로 인지할 텐데 이런 경우 어떻게 대응해야 하는지 궁금합니다. 아니면 MySQL 서버에 네트워크 전송 실패를 감지하고 해당 트랜잭션을 보정하는 동작이 있을까요? 감사합니다.

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
인프런 댓글 1 좋아요 1 조회수 97

수료증 발급 문의

미해결

비개발자도 쉽게 시작하는 코딩 입문 강의: PCCE 합격을 위한 파이썬 기초 & 알고리즘

안녕하세요. 실습환경을 제하고 전 강의 수강을 했는데 수료증 발급 가능한지 문의 드립니다. 실습환경은 회사 노트북으로 오픈이 되지 않아 실습이 불가한 상황입니다. 확인 부탁드립니다. 감사합니다.

  • python
  • 코딩-테스트
janus014 댓글 1 좋아요 0 조회수 88

vs code 설치 다름

해결됨

챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기

파이선까지는 잘 됐습니다. vs code 설치 후 아래와 같이 강의 내용과 달라서 진도가 안 나가고 있습니다. 왼쪽의 트리구조, ctrn+shift+r 버튼 눌러도 화면처럼 뜨지 않으며 select inter>> 로 뜨지 않으며 그냥 > 만 보이고 python (kiwoom_32)도 보이질 않네요. 설치를 기본이 아닌 다른 폴더에 하기는 했습니다. (d:\inforun에 설치 함)

  • python
  • 재테크
  • streamlit
  • chatgpt
  • 프롬프트엔지니어링
xatron 댓글 3 좋아요 0 조회수 133

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

해결됨

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

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

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

강의 커리큘럼 질문 드립니다

미해결

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

안녕하세요 강의 커리큘럼에 대해 알고 싶은 게 있어 질문 드립니다 저는 현직 웹개발자인데 1인 방치형 rpg 게임을 만들고 싶어서 작년에 M1+C1 강의를 구매했다가 다시 듣기 시작했습니다 그런데 학습 전 수강평을 살펴보는데 M1 강의가 무산됐다는 글이 많더라구요 그래서 무산된 프로젝트를 참고하는 것보단 완성된 프로젝트를 참고하고 싶어서 컨셉이 MMO RPG라서 구매를 하지 않았던 M2 강의를 구매했습니다 그런데 이 프로젝트도 제 기억엔 작년 하반기나 올해 상반기쯤 마감 예정이었던 듯한데 마지막 업로드가 얼마 전인 12월 17일이더라구요 그래서 강의 시작 전 조금 더 확신을 갖고 싶어서 질문 드리고 싶습니다 바쁘시겠지만 긴 답변을 원하는 게 아닌 만큼 강사님의 직접 답변을 부탁드립니다 강의 구매목록 M1 + C1 M2 C# 개발시리즈 part1(C# 기초) C# 개발시리즈 part3(유니티 엔진) C# 개발시리즈 part4(게임서버) C# 개발시리즈 part7(Unity + C# 서버 연동 기초) 현재 언어는 다르지만 개념이 겹치는 걸 제외하고 위 강의들을 구매하였고 따로 unity 에셋 정도를 구매한 상태인데 강의 금액도 금액이고 제가 이 강의를 수강하려면 적지 않은 시간이 들 거 같아서 시작 전 강사님의 시선에서 제 학습 방향이 가능한 것인지 답변을 들어보고 싶습니다 질문 1 위 강의들을 완강하고 기획과 아트 리소스를 변경할 수 있게 되면 게임을 출시할 수 있을 정도의 완성 구조 소스코드를 제공받을 수 있는 것 맞을까요? 질문 2 unity 에셋스토어에서 캐릭터 등의 리소스를 구매하여 사용하려는데 가능할지 여부와 만약 그렇게 할 경우 주의 또는 참고해야 될 사항이 있을지 궁금합니다

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
  • m2
  • m1+c1
댓글 1 좋아요 0 조회수 92

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

미해결

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

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

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

생성된 이미지 5장중 의 퀄리티가 별로일때

해결됨

원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)

안녕하세요, 이미지 생성까지 강의를 잘 따라오고 있습니다! 양질의 강의 감사드립니다. 너무 쉽게 잘 설명해주셔서 막힘없이 잘오고 있습니다. 이제 영상 편집으로 넘어가야되는데요, 그전에 궁금한 점이 1가지 있어 질문드립니다. 현재 한 주제에 대해서 이미지 5장 생성까지 완료한 상황인데요. 5장 중 4번째 이미지 1장의 퀄리티가 좀 아쉽습니다. (이 경우에는 이미지 생성 프롬프트에 이미지 내에 별도로 텍스트를 기재하지말아 달라는 설명도 추가하는게 좋을까요?) 혹시 자동화 진행하실 때, 이런 경우는 그냥 무시하고 가시는지 아니면 이런 경우만 따로 검증하셔서 이 이미지에 대한 생성만 별도로 하신 다음 영상에 집어넣으시는지 궁금합니다!

  • python
  • youtube-api
  • n8n
  • ai-활용-(ax)
길민수 댓글 1 좋아요 0 조회수 78

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

미해결

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

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

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

인기 태그

인프런 TOP Writers

주간 인기글