묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
수업 내용 재현이 거의 안되네요
너무 다르게 진행이 되어서 강의 영상이 도움이 안됩니다. tailwind v4로는 에러가 해결이 안된다고 v3로 낮춰버리네요. 결과물은 형편 없습니다..
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
이 메세지가 무한대로 떠서 작업을 진행할 수가 없어요
어떤걸 선택해도 바로 다시 뜹니다.
-
미해결3시간 만에 끝내는 Cursor 완벽 가이드
커스텀 챗 기능 없어졌나요?
버그나 그런거때문에 사용을 안하는 것 같아보이네요.. 다운그레이드해서 사용해야하려나요?
-
해결됨비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
/generate cursor rules 명령어가 표시가 안됩니다.
강의에서는 /만 입력해도 Generate Cursor Rules라는게 뜨는데 저는 안뜨는 이유가 뭘까요?cursor가 업데이트 되서 그런걸까요?
-
해결됨비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
커서 pro문구
커서 계속 사용중인데 한도가 다해서 pro로 업그레이드 하라는데 수업을 어떻게 진행해가야할까요
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
개발환경 구성 관련) PowerShell에서 npm 꼭 사용해야 하나요?
해결 방법으로 관리자 권한에서 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 명령을 할 경우 문제가 없는지 AI로 확인해 보았습니다. 아래와 같이 말해주는데, 그냥 터미날 이용해서 강의 진행해도 문제 없나요? Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 명령은 개발 환경(nvm, yarn, 허가되지 않은 스크립트 실행 등)을 설정할 때 흔히 사용되지만, 관리자 권한으로 실행할 때 발생할 수 있는 보안적, 시스템적 측면의 문제점은 다음과 같습니다.1. 로컬 악성 스크립트 실행 위험 (보안 취약점)RemoteSigned 정책의 핵심은 "내가 직접 만든(로컬) 스크립트는 서명 없이 실행 가능"하고, "인터넷에서 다운로드한 스크립트는 신뢰된 서명이 있어야 함"입니다.문제점: 만약 악성코드나 해커가 시스템에 침투하여 교묘하게 스크립트 파일을 생성했다면, 이 파일은 '로컬에서 생성된 것'으로 간주되어 아무런 제약 없이 실행됩니다.관리자 권한 결합 시: 일반 사용자 권한이라면 스크립트가 실행되어도 시스템 파일을 건드리기 어렵지만, 관리자 권한으로 실행 중인 파워셸에서 이 정책이 풀려 있으면 시스템 삭제, 레지스트리 변조, 백도어 설치 등이 매우 쉬워집니다.2. 권한 상승 공격(Privilege Escalation)의 발판해커는 종종 시스템에 침투한 후 더 높은 권한을 얻으려고 시도합니다.문제점: 실행 정책이 완화되어 있으면, 공격자가 시스템 내부에서 작성한 공격용 .ps1 스크립트를 관리자 권한으로 실행할 수 있는 통로를 열어주게 됩니다.위험성: 관리자 권한의 파워셸은 윈도우의 모든 방어 체계를 무력화할 수 있는 강력한 도구입니다.3. 'Remote' 판정의 모호성 (파일 차단 해제)RemoteSigned는 인터넷에서 받은 파일인지 여부를 파일의 'Zone.Identifier' (Alternate Data Stream) 정보를 보고 판단합니다.문제점: 압축을 풀거나 특정 방식으로 복사된 스크립트 파일은 '인터넷에서 다운로드했다'는 표식이 사라질 수 있습니다. 이 경우 시스템은 이를 '안전한 로컬 파일'로 오인하여 서명 확인 없이 실행해 버립니다.4. 영구적인 설정 변경의 위험-Scope CurrentUser는 현재 로그인한 사용자의 설정을 영구적으로 바꿉니다.문제점: 당장 특정 도구(nvm 등)를 설치하기 위해 설정을 바꿨다가, 설치가 끝난 후에도 계속 이 상태로 방치되는 경우가 많습니다. 이는 시간이 지나면서 시스템 전체의 보안 수준을 지속적으로 낮게 유지하는 결과를 초래합니다.5. 전사 보안 정책(GPO)과의 충돌회사나 조직 내에서 관리되는 PC의 경우:문제점: 그룹 정책(GPO)으로 금지된 설정을 강제로 변경하려고 시도할 경우, 설정이 적용되지 않거나 IT 관리 시스템에서 보안 위반 경고(Alert)가 발생하여 보안 팀의 조사를 받을 수 있습니다.안전하게 사용하는 권장 방법위의 위험을 최소화하면서 필요한 작업을 하려면 다음과 같은 방법을 권장합니다.일시적으로만 적용하기 (Bypass 사용)전체 시스템 설정을 바꾸지 않고, 해당 파워셸 창을 닫으면 원래대로 돌아가게 합니다.codePowershell# 특정 스크립트를 실행할 때만 정책 우회 powershell.exe -ExecutionPolicy Bypass -File .\myscript.ps1작업 완료 후 원복하기작업이 끝났다면 다시 가장 안전한 상태인 Restricted 또는 AllSigned로 돌려놓는 것이 좋습니다.codePowershellSet-ExecutionPolicy Restricted -Scope CurrentUser신뢰할 수 있는 파일만 차단 해제하기인터넷에서 받은 스크립트가 실행되지 않을 때는 전체 정책을 풀지 말고, 해당 파일만 신뢰한다고 표시하세요.codePowershellUnblock-File -Path "C:\path\to\script.ps1"결론적으로, 개발 편의를 위해 RemoteSigned를 쓰는 것이 일반적이긴 하지만, 관리자 권한으로 이 설정을 열어두는 것은 "서명되지 않은 외부 공격 도구에게 내 시스템의 마스터키를 넘겨줄 수 있는 통로"를 열어두는 것과 같습니다. 꼭 필요한 경우에만 잠시 사용하고 다시 잠그는 습관이 중요합니다.
-
미해결비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
러버블 프로젝트를 cursor로 바꾼다음에 다시 러버블로...
러버블에서 진행되고 있는 프로젝트를 다운로드후에 로컬로 실행한다음에, 다시 러버블로 옮기는건 안되는거죠?추가적ㅇ로 궁금한게 러버블 클라우드(lovable cloud)를 사용하고 있는 프로젝트를 로컬로 가져와서 개발하는게 가능한걸까요? 아니면 자체적으로 supabase를 외부로 연동한 프로젝트만 가져와서 추가적인 개발이 가능한 걸까요?
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
17 강의는 강사님과 다른 결과나 나와서요
혹시 이렇게 진행해도 되는건지요? cat CLAUDE.md 명령어로 보면 아래와 같이 생성되었습니다.# CLAUDE.mdThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.## 언어 및 커뮤니케이션 규칙- 기본 응답 언어: 한국어- 코드 주석: 한국어로 작성- 커밋 메시지: 한국어로 작성- 문서화: 한국어로 작성- 변수명/함수명: 영어 (코드 표준 준수)
-
해결됨비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
에뮬레이터 질문
주사위 굴리기 만든부분에서 현재 오른쪽하단 실행기기를 크롬으로 실행하면 정상적으로 동작하는데 미디움폰이나 그외 모바일 기기로 실행하면 그냥 플루터 기본코드화면만 나옵니다 커서한테 질문해도 똑같은 작업만 하루종일 반복하고 그대로네요 안드로이드 스튜디오에서 뭐 따로 해야할게 있는건가여 sdk설치하고 medium phone도 설치하고 다 했는데 답답하네요 ㅠ
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
cursor ai 설치시 오류
cursor ai 설치를 하면서 중간에 open cursor from terminal 이것을 설치 하는 부분에서 설치가 되지 않습니다.그래서 그냥 패스 하고 설치를 했는데 어디에서 저걸 설치를 해야할까여?저게 설치가 되지 않아서 인지 강의에서 보이는 오픈 파일 중에서 CLAUDE.md 파일이 보이지 않습니다.
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
74 미션에서
이전에..claude-nextjs-starterkit, claude-code-mastery, claude-nextjs-starters 등등 여러개의 폴더를 생성 해서 next.js 를 설치 하고 진행 하는 영상이 있었는데요.74 미션에서 위의 첨부한 그림은 claude-nextjs-starters 인데..목소리는 claude-nextjs-starterkit 을 다운 받으라고 하고..도대체 뭐가 맞는 건가요?아니면..그냥 next.js 설치 해서 하면 되는건가요? 차라리..이게 더 편하겠는데..
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
72 메타프롬프트 활욘 PRD 생성(+MVP) 에서 질문
88. 서브에이전트 를 보니까..72 메타프롬프트 활욘 PRD 생성(+MVP) 에서 새롭게 시작 한다는 노션을 사용 하는 화면을 확인할 수 있었습니다.그 이전에서는 화면을 볼 수 없어서..88 까지 확인을 했는데요.궁금한게 72 영상을 보면 claude_nextjs_starters 라는 것을 복사 해서 새로운 폴더를 만들었는데요.claude_nextjs_starters 라는 것은 이전 챕터 MCP 에서만 하더라도 shadcnui 로 로그인 페이지 만들고 하던 것 아니었나요?그런데 여기에 노션 작업을 추가 하는 건가요?CLAUDE.md 를 참고사항으로 적는 걸 보면 68,69 mcp server 영상 에서의 claude_nextjs_starters 는 아닌 것 같은데.. 도대체 감을 못잡겠네..
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
72 메타프롬프트 활욘 PRD 생성(+MVP) 에서 질문
88. 서브에이전트 를 보니까..72 메타프롬프트 활욘 PRD 생성(+MVP) 에서 새롭게 시작 한다는 노션을 사용 하는 화면을 확인할 수 있었습니다.그 이전에서는 화면을 볼 수 없어서..88 까지 확인을 했는데요.궁금한게 72 영상을 보면 claude_nextjs_starters 라는 것을 복사 해서 새로운 폴더를 만들었는데요.claude_nextjs_starters 라는 것은 이전 챕터 MCP 에서만 하더라도 shadcnui 로 로그인 페이지 만들고 하던 것 아니었나요?그런데 여기에 노션 작업을 추가 하는 건가요?CLAUDE.md 를 참고사항으로 적는 걸 보면 68,69 mcp server 영상 에서의 claude_nextjs_starters 는 아닌 것 같은데.. 도대체 감을 못잡겠네..
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
cursor & claude code
여기서 엔터 누르면 될까요?
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
@agent-prd-generator
docs에 제공해 주신 prd-generator.md를 생성했고Claude를 실행했을 때 @prd를 하면 아래와 같이 나오는데요, agent-prd-generator는 어디에 나오나요?
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
73. 서브에이전트 활용 PRD 생성 (+프롬프트 엔지니어링) prd-generator.md 파일 경로
73 session PRD-generator.md 파일을 어디서 확인할 수 있는건거야? 제공해주신다고 했는데, 수업자료에는 없어서요.
-
해결됨The 10x AI-Native Developer: 회사에서 AI로 압도적 성과를 내는 법
혹시 업데이트 관련 추가사항들도 있을까요
claude 에 신기능들에 대한 소개는 앞으로 없을까요?skills, lsp 같은이요!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인시 401 Unauthorized 오류가 뜹니다
로그인시 401 Unauthorized 오류가 떠서리덕스 액션을 봤더니 LOG_IN_FAILURE에 error 내용이 비어 있었습니다.routes/user.jsconst 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.jsfunction 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.jsconst 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.jsconst 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.jsconst 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만 찍혔습니다..
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
/init 와 CLAUDE.md 파일 한글화에 대해 질문
안녕하세요.강의 잘 듣고 있습니다.두가지 질문이 있어서요프로젝트 진행중에 새로운 기능이나 변경 사항이 있을때마다 /init를 해주면 좋은가요?(토큰 사용량과는 상관없이)CLAUDE.md 파일 내용은 원래 영어로 되어 있는건에 이번 강의에서 보니깐 한글로 요청해서 하시던데, 클코가 프로젝트를 이해하고 수행하는데 영어와는 차이가 없을까요? (역시 토큰 사용량과 상관없이, 한글 사용해도 클코가 잘 이해하고 잘 따르는지 궁금합니다.)
-
미해결Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
Link 컴포넌트는 그러면 웬만하면 무조건 쓰는편이 좋은가요?
예를들어 landing 페이지에서 특정 페이지를 prefetching하는데 가져오는 그 페이지내에서 사용되는 데이터가많거나 할경우 prefetch가 독이되는 경우가 있을까요?아니면 웬만하면 무조건 쓰는게 맞을까요?