inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

그랩마켓 웹화면 구현하기 -2 질문입니다.

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

header 에서는 header-area를 따로 만들어서 이미지를 관리를 하였는데 body에서 배너는 배너-area를 따로 안만들고 바로 banner에 이미지를 넣어서 관리하는 이유가 따로 있나여?? 무슨차이인가요

  • HTML/CSS
  • javascript
  • react
  • node.js
  • react-native
  • 머신러닝
  • express
  • tensorflow
곽호승 댓글 1 좋아요 0 조회수 137

npm run seed 에러

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요! 섹션2의 1.3 강의를 보며 초기 데이터 설정을 진행하고 있는데 에러가 발생했습니다. npx prisma db push를 실행시켜서 테이블이 생성된 것을 확인하였고 npm run seed를 실행시키니 에러가 발생하게 되었습니다. 구글링해도 잘 모르겠어서 질문드립니다.

  • next.js
shim 댓글 2 좋아요 0 조회수 204

refreshToken 저장의 문제

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

아래에 질문이 있으나 해결안이 없어 다시 문의드립니다. refreshToken, 쿠키는 정상적으로 전달되고 있습니다. setCookie도 나옵니다. 그러나, Application에 나타나지 않습니다. 그리고 조금 기다렸다가 acessToken을 재발급하려고 클릭하면 아래와 같은 메시지가 나타납니다. 크롬에서 써드파티 쿠키를 다 accept하도록 설정이 되어있고, 시크릿 모드에서도 진행해봤고 사파리에서도 동일합니다. 클릭하여 나타난 통신기록을 총 3번입니다. 첫번째 통신은 accessToken만료로 발생한 것으로 보입니다. 네트워크 통신기록을 살펴보면 UNAUTHENTICATED가 발생된 것을 알수 있습니다. 두번째 통신은 restoreAccessToken의 뮤테이션입니다. 헤더와 페이로드는 아래와 같습니다. jwt가 첨부되지 않았다는 부분입니다. 3번째 통신의 Header와 payload, response입니다. 이 부분은 주어진 조건으로 사용자 정보를 불러오는 query같습니다. 사용자에 관련된 정보가 없이 시도되어 _id null이 표시된것 같습니다. 인터넷에 검색해보았지만 잘 모르겠습니다. axios통신으로 refreshToken을 직접 저장해주는 코드를 보긴 했는데, graphql은 설정만 바꾼다고 하셔서 refreshToken을 어떻게 처리하는지 잘 모르겠습니다. 관련해서 검색을 통해 https로 환경을 바꾸면 될거다 하여, localhost:3000을 mkcert로 https로 환경을 바꾸려고 해봤는데 설치만 하고 아래의 글을 발견해서 잠깐 멈추었습니다. https://shingy.tistory.com/46 _id null의 문제가 local에 받아온 쿠키를 저장하지 못하는 문제인것 같은데, 어떻게 처리할수있는 방법이 있나 싶어서 여쭤봅니다. 코드 getAccessToken의 코드 import { GraphQLClient, gql } from "graphql-request"; import { IMutation } from "../../../commons/types/generated/types"; const RESTORE_ACCESS_TOKEN = gql` mutation { restoreAccessToken { accessToken } } `; export const getAccessToken = async (): Promise<string | undefined> => { try { const graphQLClient = new GraphQLClient( "https://backend-practice.codebootcamp.co.kr/graphql", { credentials: "include" }, ); const result = await graphQLClient.request<Pick<IMutation, "restoreAccessToken">>( RESTORE_ACCESS_TOKEN, ); const newAccessToken = result.restoreAccessToken.accessToken; return newAccessToken; } catch (error) { if (error instanceof Error) console.log(error); } }; 아폴로 클라이언트 코드 import { ApolloClient, InMemoryCache, ApolloProvider, ApolloLink, fromPromise, } from "@apollo/client"; import { createUploadLink } from "apollo-upload-client"; import { useRecoilState } from "recoil"; import { accessTokenState } from "../../../commons/store"; import { useEffect } from "react"; import { ErrorResponse, onError } from "@apollo/client/link/error"; import { getAccessToken } from "../libraries/getAccessToken"; const GLOBAL_STATE = new InMemoryCache(); interface IApolloSettingProps { children: JSX.Element; } export default function ApolloSetting(props: IApolloSettingProps) { const [accessToken, setAccessToken] = useRecoilState(accessTokenState); useEffect(() => { const result = localStorage.getItem("accessToken"); console.log(result); console.log("현재는 브라우저입니다"); setAccessToken(result ?? ""); }, []); const errorLink = onError(({ graphQLErrors, operation, forward }) => { //1-1.에러캐치 if (typeof graphQLErrors !== "undefined") { for (const err of graphQLErrors) { //1-2.토큰 만료에러인지 체크 if (err.extensions?.code === "UNAUTHENTICATED") { return fromPromise( getAccessToken() .then((newAccessToken) => { setAccessToken(newAccessToken ?? ""); operation.setContext({ headers: { ...operation.getContext().headers, Authorization: `Bearer ${newAccessToken}`, }, }); }) .catch((err) => { console.log("오류입니다"); }), ).flatMap(() => forward(operation)); } } } }); const uploadLink = createUploadLink({ uri: "https://backend-practice.codebootcamp.co.kr/graphql", headers: { Authorization: `Bearer ${accessToken}`, credentials: "include", }, }); const client = new ApolloClient({ link: ApolloLink.from([errorLink, uploadLink]), uri: "http://backend-practice.codebootcamp.co.kr/graphql", cache: GLOBAL_STATE, }); return <ApolloProvider client={client}>{props.children}</ApolloProvider>; } 로그인 success의 코드 import { gql, useApolloClient, useQuery } from "@apollo/client"; import type { IQuery } from "../../../src/commons/types/generated/types"; import { wrapAsync } from "../../../src/components/commons/libraries/asyncFunt"; const FETCH_USER_LOGGED_IN = gql` query fetchUserLoggedIn { fetchUserLoggedIn { email name } } `; export default function LoginPage() { const client = useApolloClient(); const onClickButton = async (): Promise<void> => { const result = await client.query({ query: FETCH_USER_LOGGED_IN, }); console.log(result); }; return ( <> {/* <div>{data?.fetchUserLoggedIn.name}님, 환영합니다.</div> */} <div>환영</div> <button onClick={wrapAsync(onClickButton)}>클릭하세요</button> </> ); }

  • react
  • node.js
  • seo
  • graphql
  • next.js
댓글 2 좋아요 0 조회수 144

GP 테마 LOOP 템플릿 관련

미해결

구글 애드센스 수익형 워드프레스 블로그 만들기

GP 테마에서 메인 페이지 직접 제작하는 방법 강의를 수강중인데 현재 강의에서 나오는 QUERY LOOP나 POST TEMPLATE 이 제 테마에서는 나오질 않습니다. 이에 따라 강의에서 진행되는 내용을 이어갈수가 없는데 어떤 차이인지요? 아무리해도 POST TEMPLATE을 찾을수가 없습니다. [제 화면 캡쳐]

  • HTML/CSS
  • wordpress
  • php
  • 웹-디자인
  • 반응형-웹
최재원 댓글 2 좋아요 0 조회수 159

자동으로 import 되는 패키지 관련 문의

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 덕분에 좋은 강의 잘 듣고 있습니다! next.js 강의의 2.9 의 14분 가량 보면 <Link> 태그 입력하면 자동으로 import 문이 작성되는데 어떤 패키지를 쓰시는건지 물어봐도 될까요?

  • react
  • typescript
  • next.js
황일환 댓글 2 좋아요 0 조회수 146

[해결완료] 실습용 백엔드 서버 연결 오류

해결됨

한 입 크기로 잘라먹는 Next.js

혹시나 아래와 같은 오류가 발생하시는 분들중에 비밀번호도 다 알맞게 설정했는데 오류가 발생하신다면 supabase에 새로운 project를 생성하여 시도 해보시는 것도 좋을 것 같아요! 계속 안 되다가 새로 만들어서 시도했더니 되네요...ㅠㅠ 며칠동안 해결하려고 노력했다가 log보고 그냥 다시 만들어볼까해서 시도해봤는데 해결했습니다..ㅎ 다른 분들이 올려주신 오류와 유사하게 supabase와 연결하는 과정에서 오류가 발생합니다. supabase database log를 확인하였을 때에 error는 확인되지 않고, 비밀번호를 수정해봐도 오류가 바뀌지 않습니다. 비밀번호가 틀릴 경우에도 log에 error는 확인되지 않는걸까요?

  • react
  • typescript
  • next.js
하늘 댓글 2 좋아요 0 조회수 414

기출문제나 모의고사

해결됨

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

선생님 안녕하세요 혹시 강의 관련해서 강의업데이트나 이전 기출, 모의고사처럼 문제가 더 업데이트될까요? 문제모음 같이 해당문제지와 영상이 있으면 좋을 것 같아 여쭤봐요

  • python
  • java
  • c
  • 정보처리기사
rsrarsra 댓글 2 좋아요 0 조회수 126

피그마 링크는 어디 있을까요?!

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

피그마 링크를 못찾겠어요ㅠ 이미지 다운 받아야 하는데 어디서 볼 수 있을까요?

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
skykwj0422 댓글 2 좋아요 0 조회수 180

목소리 좀 키워주세요.

미해결

HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌2)

소리가 너무 작아서 잘 안들립니다.. 좋은 강의 감사하지만 들을 때마다 볼륨을 거의 최대로 해야 해서 불편한 부분이 있습니다. 소리좀 조금 키워주셨으면 좋겠습니다 ㅠ

  • HTML/CSS
  • javascript
  • jquery
육무군 댓글 2 좋아요 1 조회수 160

ORM 개념

해결됨

실전! FastAPI 입문

안녕하십니까? 좋은 강의 1회독 후, 계속 부족한 부분 수강하는 수강생입니다. 다시 공부하다가 제대로 이해하게 맞는지 궁금한게 있어 질문드렸습니다. ORM이라하면 Python 환경에서 외부 서버에 구동되고 있는 DB에 대해서 객체지향의 추상화와 상속의 개념을 적용하여 Python에서 외부 서버의 DB에 대해서 SQL 명령어를 수행할 수 있도록 도움을 준다라고 이해하면 좋을까요?

  • python
  • orm
문승주 댓글 1 좋아요 0 조회수 146

overfitting이 나는 이유가 궁금합니다.

해결됨

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

데이터의 4가지만 고려했다는 것은, 주식예측에 대해서 재무제표나 그런 지표들을 고려를 안했다는 의미로 말씀하신거 같습니다 근데 그 외에 이유도 있을지 궁금하여 질문 드립니다!

  • python
  • 머신러닝
  • 딥러닝
  • 인공신경망
  • pytorch
최규형 댓글 2 좋아요 1 조회수 199

Lecture.15-3 강의의 image 자료 문의

미해결

[PL 0302] 데이터 연산을 위한 파이썬 - 넘파이 마스터 클래스

안녕하세요. Lecture.15-3 강의에서 강의노트 pdf 파일은 보이는데, image 자료가 확인되지 않습니다.

  • python
  • numpy
  • 인공지능(ai)
MS 댓글 1 좋아요 0 조회수 107

Gitlab 소스코드 접속이 안됩니다

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

안녕하세요 강의 1강에 있는 완성코드 접속 했는데 프론트 , 백 둘 다 아래처럼 404 page가 나옵니다 확인 해주시면 감사하겠습니다

  • HTML/CSS
  • java
  • mysql
  • php
미다스 댓글 2 좋아요 1 조회수 216

ID태크와 Class 태그

해결됨

파이썬으로 나만의 블로그 자동화 프로그램 만들기

안녕하세요. driver.find_element(By.CSS_SELECTOR, "#id").click() 아이디 패스워드부분을 작성하실때는 #id 를 사용하시고 다른 버튼 및 선택 부분은 .class를 사용하시는데 차이가 있을까요? 개발자도구에서 ID 부분에서 ID도 있지만 class도 있어서요. ID가 명시되어 있다면 ID로 하면되고 그렇지 않다면 Class를 넣어서 사용하면 될까요?

  • python
  • wordpress
  • 웹-크롤링
  • selenium
subak 댓글 2 좋아요 0 조회수 140

visibility:hidden; 적용 문제

미해결

[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>index</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <header> <div class="header-logo"></div> <div class="nav"></div> </header> <div class="slide"> <div> <a href="#none"><img src="images/1200-1.jpg" alt="slide-1"></a> <a href="#none"><img src="images/1200-2.jpg" alt="slide-2"></a> <a href="#none"><img src="images/1200-3.jpg" alt="slide-3"></a> </div> </div> <div class="items"> <div class="news"></div> <div class="banner"></div> <div class="shortcut"></div> </div> <footer> <div class="footer-logo"></div> <div class="copyright"> <div></div> <div></div> </div> </footer> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html> @charset "utf-8"; body { margin: 0; } .container { margin: auto; width: 1200px; border: 1px solid #000; } header { display: flex; justify-content: space-between; } header > div { height: 100px; border: 1px solid #000; } .header-logo { width: 200px; } .nav { width: 600px; } /* slide */ .slide { position: relative; width: 1200px; height: 300px; border: 1px solid #000; } .slide > div { font-size: 0; } .slide > div > a { position: absolute; top: 0; left: 0; animation: slide 10s linear infinite; opacity: 0; } .slide > div > a:nth-child(2) { animation-delay: 3.5s; } .slide > div > a:nth-child(3) { animation-delay: 7s; } @keyframes slide { 0% { opacity: 0; visibility: hidden; } 5% { opacity: 1; } 35% { opacity: 1; } 40% { opacity: 0; } 100% { opacity: 0; } } /* slide */ .items { display: flex; } .items > div { height: 200px; border: 1px solid #000; flex:1; } footer { display: flex; } footer > div { height: 100px; border: 1px solid #000; } .footer-logo { width: 200px; } .copyright { width: 1000px; } .copyright > div { box-sizing: border-box; border: 1px solid #000; height: 50%; } 현재 섹션8-5번 강의 수강중입니다. 강의에서 말씀하신대로 세번째 슬라이드 사진이 투명도 0 상태로 최상위 계층에 있는 상태여서 visibility: none; 속성을 주었는데, 속성을 넣어도 다른 슬라이드 사진을 눌러도 세번째 슬라이드사진이 클릭 되는데 어떤부분이 잘못되었을까요?

  • HTML/CSS
  • jquery
  • 웹-디자인
Cheon 댓글 1 좋아요 1 조회수 118

req.cookies.token == undefined 현상

해결됨

React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드

logout을 해보니 400BadRequest:이미 로그아웃 됨 상태가 지속됩니다. console.log(req.cookies.token); 출력해보니 undefined 라고 출력됩니다. 쿠키를 제대로 읽지 못하는것 같은데 왜 이런 현상이 뜨는지 궁금합니다.. const express = require("express"); const router = express.Router(); const bcrypt = require("bcrypt"); const User = require("../models/User"); const axios = require("axios"); const jwt = require("jsonwebtoken"); router.post("/signup", async (req, res) => { try { const { username, password } = req.body; const existingUser = await User.findOne({ username }); if (existingUser) { return res.status(400).json({ message: "이미 존재하는 사용자입니다." }); } const hashedPassword = await bcrypt.hash(password, 10); const user = new User({ username, password: hashedPassword, }); await user.save(); res.status(201).json({ message: "회원가입이 완료되었습니다." }); } catch (error) { res.status(500).json({ message: "서버 오류가 발생했습니다." }); console.log(error); } }); router.post("/login", async (req, res) => { try { const { username, password } = req.body; const user = await User.findOne({ username }).select("+password"); //왜인지 password가 select되지 않아서 추가함 if (!user) { return res.status(401).json({ message: "존재하지 않는 사용자입니다." }); } if (!user.isActive) { return res.status(401).json({ message: "비활성화된 사용자입니다." }); } if (user.isLoggedIn == true) { return res.status(401).json({ message: "이미 접속 중인 사용자입니다." }); } const isValidPassword = await bcrypt.compare(password, user.password); //비밀번호 비교 if (!isValidPassword) { user.failedLoginAttempts += 1; user.lastLoginAttempt = new Date(); if (user.failedLoginAttempts >= 5) { user.isActive = false; //다섯번 틀리면 계정 비활성화 ㅋㅋ await user.save(); return res.status(401).json({ message: "비밀번호를 5회 이상 틀려 계정이 비활성화되었습니다.", }); } await user.save(); return res.status(401).json({ message: "비밀번호가 일치하지 않습니다.", remainingAttempts: 5 - user.failedLoginAttempts, }); } user.failedLoginAttempts = 0; user.lastLoginAttempt = new Date(); user.isLoggedIn = true; try { const response = await axios.get("https://api.ipify.org?format=json"); //공공장소 사용금지요 const ipAddress = response.data.ip; //한번 정제함 user.lastLoginIp = ipAddress; } catch (error) { console.log("IP 주소를 가져오는데 실패했습니다: ", error.message); } await user.save(); const token = jwt.sign( { userId: user._id, username: user.username }, process.env.JWT_SECRET, { expiresIn: "24h" } //토큰 만료는 24시간 ); console.log(token); //오 된다 res.cookie("token", token, { httpOnly: true, //자바스크립트에서 쿠키 접근 불가 secure: "production", //https에서만 쿠키 전송 sameSite: "strict", //같은 사이트에서만 쿠키 전송 maxAge: 24 * 60 * 60 * 1000, //24시간 }); const userWithoutPassword = user.toObject(); //구글링 해보니 이렇게 하면 문서 타입을 일반 객체로 변환할 수 있다고 한다 delete userWithoutPassword.password; //보안때문에 비밀번호는 삭제할 수 있다고 한다 res.json({ user: userWithoutPassword }); } catch (error) { console.log("서버 오류: ", error); res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); router.post("/logout", async (req, res) => { console.log(req.cookies.token); try { const token = req.cookies.token; if (!token) { return res.status(400).json({ message: "이미 로그아웃된 상태입니다." }); } try { const decoded = jwt.verify(token, process.env.JWT_SECRET); const user = await User.findById(decoded.userId); if (user) { user.isLoggedIn = false; await user.save(); } } catch (error) { console.log("토큰 검증 오류: ", error.message); } res.clearCookie("token", { httpOnly: true, secure: "production", sameSite: "strict", }); res.json({ message: "로그아웃되었습니다." }); } catch (error) { console.log("로그아웃 오류: ", error.message); res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); router.delete("/delete/:userId", async (req, res) => { try { const user = await User.findByIdAndDelete(req.params.userId); if (!user) { return res.status(404).json({ message: "사용자를 찾을 수 없습니다." }); } res.json({ message: "사용자가 성공적으로 삭제되었습니다." }); } catch (error) { res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); module.exports = router;

  • HTML/CSS
  • javascript
  • react
  • node.js
  • mongodb
Schwartz Melvin 댓글 1 좋아요 0 조회수 192

4:30 스위치 문에 for문은 생략인가요

해결됨

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

4:30 스위치 문 바로 위 for문은 생략하면 되는건지요?

  • python
  • java
  • c
  • 정보처리기사
kjh76065644 댓글 2 좋아요 0 조회수 92

[해결 완료] [14:50] 문제가 발생했습니다. 다시 시도하세요

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 강사님 http://localhost:3000/book/100 URL로 테스트 진행 시에 저는 왜 문제가 발생했습니다. 다시 시도해주세요 문구가 웹페이지에 보이지 않는건가요? [해결 완료] 강사님 인강에서 아무리 찾아봐도 fetch-one-book.ts 파일에 if (!response.ok) throw new Error(""); 코드를 추가한 내역이 인강에서 보이지가 않습니다.. 몇 번을 되돌려봐도 못찾고 있습니다. 혹시 누락 사항일까요? import style from "./[id].module.css"; import {GetStaticPropsContext, InferGetStaticPropsType} from "next"; import fetchOneBook from "@/lib/fetch-one-book"; import { useRouter } from "next/router"; export const getStaticPaths = () => { return { paths: [ { params: { id: "1" } }, { params: { id: "2" } }, { params: { id: "3" } }, ], // fallback: "blocking", fallback: true, }; }; export const getStaticProps = async ( context: GetStaticPropsContext ) => { const id = context.params!.id; const book = await fetchOneBook(Number(id)); return { props: { book, }, }; }; export default function Page({ book, }: InferGetStaticPropsType<typeof getStaticProps>) { const router = useRouter(); if (router.isFallback) return "로딩중입니다"; console.log("booktest") console.log(book) if (!book) return "문제가 발생했습니다 다시 시도하세요"; const { id, title, subTitle, description, author, publisher, coverImgUrl, } = book; return ( <div className={style.container}> <div className={style.cover_img_container} style={{backgroundImage: `url('${coverImgUrl}')`}} > <img src={coverImgUrl} alt={""}/> </div> <div className={style.title}>{title}</div> <div className={style.subTitle}>{subTitle}</div> <div className={style.author}> {author} | {publisher} </div> <div className={style.description}>{description}</div> </div> ); }

  • react
  • typescript
  • next.js
강프로그래머 댓글 1 좋아요 0 조회수 151

[해결] 그누보드 설치시 DB 연결 실패

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

강의에서는 gnuboard DB를 3307로 사용하는데 host에 그냥 localhost만 쓸 경우 자꾸 3306으로 연결 되서 연결 실패하더라구요 다른 config 설정을 바꿔주어야 하나 엄청 찾다가.. host 부분에 localhost가 아닌 localhost:3307로 써주니 3307 port의 mysql로 접속되어 db 설치가 됩니다. 다른 해결 방법이 있는진 모르겠지만.. 이 방법도 있으니 막히시는 분들 참고 하세요

  • HTML/CSS
  • java
  • mysql
  • php
미다스 댓글 2 좋아요 2 조회수 474

[해결] XAMPP mysql 실행 안되는 문제

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

안녕하세요 다른 분들 수강 공유 차원에서 말씀드립니다. XAMPP 컨트롤에서 port 충돌이 났을때 강의에서는 아래 화면 설정만 바꾸면 된다고 하시는데, 실제로는 아래 my.ini에서 port도 바꿔주시고 실행해주셔야 에러가 나지 않습니다. 해당 강의 조금만 더 들으시면 저기도 수정해야한다고 해주시긴하는데, 중간에 막히시는 분들 계실것 같아서 공유드리니다.

  • HTML/CSS
  • java
  • mysql
  • php
미다스 댓글 2 좋아요 1 조회수 576

인기 태그

인프런 TOP Writers

주간 인기글