inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

playwright 설치시 같이 설명해주세요 아니면 저같이 실수가 나오네요

미해결

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

--scope 는 @playwright/mcp 자체의 옵션이 아니라, Claude Code에서 MCP 서버를 등록할 때 쓰는 claude mcp add 명령의 옵션입니다. 그래서 npx @playwright/mcp@latest 에 직접 붙이면 인식이 안 됩니다. Claude Code에 프로젝트 범위로 등록하고 싶다면 claude mcp add playwright --scope project -- npx @playwright/mcp@latest 단순히 playwright mcp 서버만 실행하고 싶다면 ( --scope 없이) npx @playwright/mcp@latest 목적에 따라 어떤 걸 원하시는지 알려주시면 정확히 안내해 드릴게요.

  • react
  • 인공지능(ai)
  • claude
김주일 댓글 1 좋아요 0 조회수 56

git 복수로 커밋하기

미해결

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

프로젝트를 3번째를 만들면서 커밋을 할려고 버튼(기호생략)을 누르면 기존의 프로젝트의 커밋화면으로 이동합니다. 제가 무엇을 잘못한거가요 쉽게 알려주세요

  • react
  • 인공지능(ai)
  • claude
김주일 댓글 3 좋아요 0 조회수 80

Context7 설치 방법 바뀐 듯 한데...

미해결

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

Context7 깃헙에 들어가도 영상과 같이 claude code remote server connection같은 건 없고 설치 방법이 바뀐듯 합니다....

  • react
  • 인공지능(ai)
  • claude
훈 지 댓글 2 좋아요 0 조회수 71

\init를 할때마다 Claude.md파일이 자동으로 업데이트 되는지 궁금합니다.

미해결

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

\init를 마지막에 매번 하면 Claude.md가 업데이트 되는건가요?? 이전강의 \init초기화 에서 보면 _ claude가 프로젝트 전체를 분석해서 현재 상황을 완벽하게 이해한 다음 claude.md파일을 자동생성한다 라고 하셨습니다. 그 프로젝트를 이어서 진행하고 마지막에 \init를 하면 기존에 있던 md파일에 자동으로 업데이트가 되는건지 궁금합니다.

  • react
  • 인공지능(ai)
  • claude
  • init
  • 자동업데이트
alsekfrwh 댓글 2 좋아요 0 조회수 59

9강 35분경 질문있습니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

표에서는 토탈값이 계속 계산되지만 이는 계산과정에 있어 필요할까봐 넣어주신 예시사항일뿐인거고 코드상으로는 I가 15가 되어서 for문이 종료되었을때의 기준 sumQ와 R 을 더하여 Total값이 50이 되는과정 한번만 있는게 맞는걸까요? 토탈이 계속 증가할 이유를 찾지 못하겠어서 질문드립니다

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
kohs35 댓글 2 좋아요 0 조회수 50

"포스트 생성에 실패했습니다" 실패 문구와 함께 에러가 발생합니다ㅠㅠ

해결됨

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

안녕하세요 정환님! 정환님의 강의를 들으면서 코드를 따라 작성해보다가 포스트와 이미지를 최종적으로 업로드 하는 과정에서 아래의 캡쳐 사진과 같이 포스트 생성에 실패했다는 에러 메시지가 뜨게됩니다. 네트워크 탭에 보면, 포스트 부분은 잘 전달이 되는거같은데 이미지 생성에 관한 결과가 보이지 않는 것으로 보아 이미지 생성 관련 코드에서 문제가 생긴것같은데 무슨 문제일까요??..ㅠ 아래는 해당 코드들입니다. 이미지 생성 관련 코드를 가져왔는데 혹여나 다른 부분의 코드가 필요하면 추가 업로드 드리겠습니다. api/post.ts import type { PostEntity } from './../types'; import supabase from '@/lib/supabase'; export async function createPost(content: string) { const { data, error } = await supabase .from('post') .insert({ content }) .select() .single() if (error) throw error return data } export async function createPostWithImages({ content, images, userId }: { content: string images: File[] userId: string }) { // 1. 새로운 포스트 생성 (맨 위에서 생성한 포스트 비동기 함수 가져오기) const post = await createPost(content) if (images.length === 0) return post // 2. 이미지 업로드 try { const imageUrls = await Promise.all( images.map((image) => { const fileExtension = image.name.split(".").pop() || "webp" const fileName = `${Date.now()}-${crypto.randomUUID()}.${fileExtension}` const filePath = `${userId}/${post.id}/${fileName}` return uploadImage({ file: image, filePath }) }) ) // 3. 포스트 테이블 업데이트 const updatedPost = await updatePost({ id: post.id, image_urls: imageUrls }) return updatedPost } catch(error) { await deletePost(post.id) throw error } } export async function updatePost(post: Partial<PostEntity> & { id: number }) { const { data, error } = await supabase .from("post") .update(post) .eq("id", post.id) .select() .single() if (error) throw error return data } export async function deletePost(id: number) { const { data, error } = await supabase .from("post") .delete() .eq("id", id) .select() .single() if (error) throw error return data } hooks/mutations/post/use-create-post.ts import type { UseMutationCallback } from './../../../types'; import { createPost, createPostWithImages } from '@/api/post'; import { useMutation } from '@tanstack/react-query'; export function useCreatePost(callbacks?:UseMutationCallback) { return useMutation({ mutationFn: createPostWithImages, onSuccess: () => { if(callbacks?.onSuccess) callbacks.onSuccess() }, onError: (error) => { if (callbacks?.onError) callbacks.onError(error) } }) } components/modal/post-editor-modal.tsx import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogTitle } from '@/components/ui/dialog' import { useCreatePost } from '@/hooks/mutations/post/use-create-post' import { usePostEditorModal } from '@/store/post-editor-modal' import { useSession } from '@/store/session' import { ImageIcon, XIcon } from 'lucide-react' import { useRef, useState, useEffect, ChangeEvent } from 'react' import { toast } from "sonner" import { Carousel, CarouselContent, CarouselItem } from '../ui/carousel' type Image = { file: File, previewUrl: string } export default function PostEditorModal() { const session = useSession() const { isOpen, close } = usePostEditorModal() const { mutate: createPost, isPending: isCreatePostPending } = useCreatePost({ onSuccess: () => { close() }, onError: (error) => { toast.error("포스트 생성에 실패했습니다", { position: "top-center" }) } }) const [content, setContent] = useState("") const [images, setImages] = useState<Image[]>([]) const textareaRef = useRef<HTMLTextAreaElement>(null) const fileInputRef = useRef<HTMLInputElement>(null) const handleCloseModal = () => { close() } const handleCreatePostClick = () => { if (content.trim() === "") return createPost({ content, images: images.map((image) => image.file), userId: session!.user.id }) } const handleSelectImages = (e:ChangeEvent<HTMLInputElement>) => { if (e.target.files) { const files = Array.from(e.target.files) files.forEach((file) => { setImages((prev) => [ ...prev, { file, previewUrl: URL.createObjectURL(file) }, ]) }) } e.target.value = "" } const handleDeleteImage = (image:Image) => { setImages((prevImages) => prevImages.filter((item) => item.previewUrl !== image.previewUrl)) } useEffect(() => { if (textareaRef.current) { textareaRef.current.style.height = "auto" textareaRef.current.style.height = textareaRef.current.scrollHeight + "px" } }, [content]) useEffect(() => { if (!isOpen) return textareaRef.current?.focus() setContent("") setImages([]) }, [isOpen]) return ( <Dialog open={isOpen} onOpenChange={handleCloseModal}> <DialogContent className="max-h-[90vh]"> <DialogTitle>포스트 작성</DialogTitle> <textarea disabled={isCreatePostPending} ref={textareaRef} value={content} onChange={(e) => setContent(e.target.value)} className="max-h-125 min-h-25 focus:outline-none" placeholder="무슨 일이 있었나요?" /> <input onChange={handleSelectImages} ref={fileInputRef} type="file" accept="image/*" multiple className="hidden" /> {images.length > 0 && <Carousel> <CarouselContent> {images.map((image) => <CarouselItem className="basis-2/5" key={image.previewUrl}> <div className="relative"> <img src={image.previewUrl} className="h-full w-full rounded-sm object-cover" /> <div onClick={() => handleDeleteImage(image)} className="absolute top-0 right-0 m-1 cursor-pointer rounded-full bg-black/30 p-1" > <XIcon className="h-4 w-4 text-white"/> </div> </div> </CarouselItem>)} </CarouselContent> </Carousel>} <Button onClick={() => { fileInputRef.current?.click() }} variant={"outline"} className="cursor=pointer" > <ImageIcon/> 이미지 추가</Button> <Button disabled={isCreatePostPending} onClick={handleCreatePostClick} className="cursor=pointer"> 저장 </Button> </DialogContent> </Dialog> ) }

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

11강 3:20

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

문자열 쓸때 %를 2번 써야 출력시 %가 나온다고 하셨는데 /같은 경우는 한번만 써도 되는건가요? 혹시 %처럼 꼭 두번 써야 되는 문자가 더 있는지 궁금합니다

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
가보자고 댓글 2 좋아요 0 조회수 54

10강 11:42

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

ptintf("\n");에서 \n이 있길래 출력값은 개행 되어 나오는 줄 알았는데요 왜 출력값이 아래와 같지 않은지 모르겠습니다, 그리고 아래와 같은 결과가 나오려면 코드가 어떻게 쓰여져야 하는지도 궁금합니다 1 2 3 4 5

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
가보자고 댓글 2 좋아요 0 조회수 61

쿠키 생성 관련

미해결

타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지

카카오 로그인 후 이메일을 입력하고 몽고DB에 이메일과 refresh token이 저장된 것 까지 확인은 했는데 쿠키가 생성되지 않고 있네요. 강사님 네이버메일로 소스코드링크를 보냈습니다.

  • javascript
  • react
  • typescript
  • next.js
  • jwt
태리바이트 댓글 3 좋아요 0 조회수 69

pcskjs@naver.com

미해결

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

강의 자료 제목의 메일 주소로 송부 부탁드립니다.

  • python
김종석 댓글 1 좋아요 0 조회수 45

로컬호스트에 웹훅으로 불어오기 오류

해결됨

전문 사주팔자 AI Agent 만들기 - 풀스택 n8n+Python

일주일만에 다시 실행하는 갑자기 로컬호스트에서 운세보기 했을때 분석중이라고 만 뜨고 엔팔엔에서 웹훅에서 불러오기 오류가 계속 됩니다.

  • python
  • 인공지능(ai)
  • 프롬프트엔지니어링
  • ai-agent
  • n8n
hanul.baro.1004 댓글 2 좋아요 0 조회수 57

9강 26:23

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

맨아래 printf("%d\n", count); 에서 \n이 있어서 그 누적합이 개행으로 아래와 같이 출력될 것 같다고 생각했는데요 이게 왜 아닌지랑, 이렇게 나오려면 코드가 어떻게 쓰여져야 하는지 궁금합니다 2 6 14 24

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
가보자고 댓글 2 좋아요 0 조회수 58

9강 23:46

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

맨아래 printf("%d\n",count);에서 \n이 있어서 저는 출력값이 아래와 같을 줄 알았거든요 1 2 3 4 5 6 7 그런데 정답이 7이더라구요 왜 제가 생각한 것처럼 위와 같이 안 나온 건지 모르겠습니다 그리고 위와 같은 출력값이 나오려면 코드를 어떻게 써야 되는지도 궁금합니다

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
가보자고 댓글 2 좋아요 0 조회수 44

네이버 API KIS API 강의

해결됨

(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI

해당 강의내용은 1강 KRX 2강 Naver 3강 KIS 관련 내용을 올려주신다고 언급 해 주셨습니다. 현재 1강만 올라와있고 2,3강은 추후 업데이트 할 예정이신가요??

  • python
  • flask
  • next.js
  • 인공지능(ai)
밝은 고양이 댓글 2 좋아요 0 조회수 59

plan mode에서 clear context 가 안보이는 이유

미해결

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

이게 맞는건가요? showClearCOntextOnPlanAccept 설정이 켜있을때만 보인다고 하던데요?

  • react
  • 인공지능(ai)
  • claude
아밥퍼 댓글 3 좋아요 0 조회수 78

JWT auth error invalid token

미해결

타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지

이메일 입력 후 contitnue 버튼을 누르면 JWT auth error invalid token 오류가 나네요. 몇시간째 보고 있는데 원인을 찾지 못하겠네요. 전체 소스 코드를 같이 첨부하고 싶은데 할 수 가 없네요. 일단은 EmailInfoForm 소스만 올려 봅니다. backend는 .env 빼고 소스를 특별하게 수정한 부분이 없습니다. 브라우저 application 데이터도 클리어 해보고 했지만 소용이 없네요. 확인 부탁드립니다. "use client"; import {useState} from "react"; import {MailIcon} from "../ui/Icons"; import {validateEmail} from "@/lib/validation"; import clientApi from "@/lib/api/clientApi"; import {useRouter, useSearchParams} from "next/navigation"; export default function EmailInfoForm() { const router = useRouter(); const searchParams = useSearchParams(); const accessToken = searchParams.get("access_token") ?? ""; const [email, setEmail] = useState(""); const [error, setError] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const handleFormSubmit = async (e: React.SubmitEvent<HTMLFormElement>) => { e.preventDefault(); if (isSubmitting) return; setError(""); //이메일 검증 const validationError = validateEmail(email); if (validationError) { setError(validationError); return; } //확인 대화 상자 const confirmed = window.confirm( "한 번 입력한 이메일은 변경할 수 없습니다. 이 이메일로 저장할까요?", ); if (!confirmed) return; setIsSubmitting(true); try { const res = await clientApi("/auth/update-email", { method: "PATCH", body: JSON.stringify({email: email.trim()}), headers: { Authorization: `Bearer ${accessToken}`, }, }); if (!res.ok) { const errorData = await res.json().catch(() => null); throw new Error( (errorData && errorData.error) || "이메일 업데이트에 실패하였습니다.", ); } router.replace("/"); router.refresh(); } catch (e) { setError( e instanceof Error ? e.message : "이메일 업데이트에 실패하였습니다.", ); } }; return ( <> <form className="flex flex-col gap-5" onSubmit={handleFormSubmit}> <div className="flex flex-col gap-2"> <label htmlFor="email" className="text-sm font-medium text-foreground" > Email Address </label> <div className="relative"> <MailIcon className="absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" /> <input id="email" type="email" placeholder="Enter your email" className="h-11 w-full rounded-lg border-none bg-secondary pl-10 pr-4 text-sm text-foreground placeholder-muted-foreground outline-none focus:ring-2 focus:ring-primary" value={email} onChange={(e) => setEmail(e.target.value)} /> </div> </div> {error && ( <p className="text-sm font-medium text-destructive">{error}</p> )} <div className="grid grid-cols-2 gap-3"> <button type="button" className="h-11 rounded-lg bg-secondary text-sm font-medium text-secondary-foreground transition-colors hover:opacity-90" > Cancel </button> <button type="submit" className="h-11 rounded-lg bg-primary text-sm font-medium text-primary-foreground transition-colors hover:opacity-90" > Continue </button> </div> </form> </> ); }

  • javascript
  • react
  • typescript
  • next.js
  • jwt
태리바이트 댓글 2 좋아요 0 조회수 66

코드 중간에 . 붙은건 뭐라고 봐야할까요?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

4:38 scanner.nextlnt() 이건 뭔가요 중간에 . 이 붙었는데 이 개념이 어색합니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
wkruqja 댓글 2 좋아요 0 조회수 65

설명중 단어 의미 해석 문제.

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

3:00 파라미터 라는 말이 나오는데 비전공자라서 무슨말인지 모르겠어요.. 이런것들 자막 켜면 부가 설명에 예시가 달려서 나오면 안될까요ㅠㅠ 개행도 오늘 처음들었고. 첫 강의부터 약간 옆에 검색창 띄워놓고 수강해야할것 같은 예감이 듭니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
wkruqja 댓글 1 좋아요 0 조회수 47

인기 태그

인프런 TOP Writers

주간 인기글