묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
이미지 분석을 해주는 agent
혹시 n8n에서 이미지를 분석해주는 ai 모델도 만들수있을까요. 간단하게 구현을 해봤는데, 이미지를 인식하는 정확도가 떨어지네요. 이미지를 다운받을수있는 url을 ai-agent에게 던져주고 ai모델은 gpt4o, 4.1, 5까지 사용해보고gemini 2.5pro로도 테스트를 해봤는데 정확도가 높지가 않네요 혹시 정확도를 높이는 팁이 있을까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
그랩님, 상품 상세 페이지 에러와 의문점 질문드립니다.
그랩님, 강의 잘 듣고 있습니다.다름이 아니라, 상품 상세 페이지 에러와 의문점이 있어서 어떻게 해결해야 하는지 궁금한 사항이 있어 질문 드리게 되었습니다.일단 src/main/index.js 소스 코드를 첨부합니다.import './index.css'; import axios from "axios"; import React from 'react'; import {Link} from 'react-router-dom'; function MainPage(){ const [products, setProducts]=React.useState([]); React.useEffect( function(){ axios.get("제 mock 서버 주소 넣었습니다/products") .then(function(result){ const products=result.data.products; setProducts(products); }).catch(function(error){ console.error("에러 발생:",error); }); },[]); return ( <div> <div id="header"> <div id="header-area"> <img src="../images/icons/logo.png" /> </div> </div> <div id="body"> <div id="banner"> <img src="../images/banners/banner1.png" /> </div> <h1>판매되는 상품들</h1> <div id="product-list"> { products.map(function(product, index){ return ( <div className="product-card"> <Link className="product-link" to={`/products/${product.id}`}> <div> <img className="product-img" src={product.imageUrl} /> </div> <div className="product-contents"> <span className="product-name">{product.name} </span> <span className="product-price">{product.price}원 </span> <div className="product-seller"> <img className="product-avatar" src="../images/icons/avatar.png" /> <span>{product.seller}</span> </div> </div> </Link> </div> ); }) } </div> </div> <div id="footer"></div> </div> ); } export default MainPage;2.src/product/index.js 소스 첨부합니다.import {useParams} from 'react-router-dom'; import axios from "axios"; import { useEffect, useState } from 'react'; function ProductPage(){ // const params=useParams(); const {id} = useParams(); const [product, setProduct] = useState(null); useEffect(function(){ axios.get('제 mock 서버 주소 넣었습니다/products/${id}' ) .then(function (result) { setProduct(result.data); // console.log(result); }).catch(function(error){ console.error(error); } ); },[]); console.log(product); // console.log(params); return <h1>상품 상세 페이지 {id} 상품</h1>; } export default ProductPage;-->여기서부터 의문점과 문제점이 발생하게 되니 읽어주시고 해결할 수 있는 방법을 알려주시면 좋겠습니다. 위 소스에서axios.get('제 mock 서버 주소 넣었습니다/products/${id}') 처럼 소스를 달러 중괄호 아이디 입력하면, 아래와 같은 첨부 사진처럼 에러가 납니다. --> 위 에러 첨부 사진은 어떻게 해결해야 할까요?3. 하지만, 위 소스대로 입력 안하면 axios.get('제 mock 서버 주소 넣었습니다/products/1') 하면 제대로 데이터를 오류 없이 아래 첨부 사진처럼 받아 오는 것을 알 수 있습니다. 3-1. 그랩님, 강의 소스에서 처럼 axios.get('제 mock 서버 주소 넣었습니다/products/${id}')해서 하면 위 첨부 사진 처럼 에러가 나는데요, 성공적으로 오류 없이 불러오고 싶은데요, 어떻게 해야 하나요? 단계별로 어떻게 소스를 수정해야하는지 알려주시면 좋겠습니다.확인하시면 답변 부탁 드립니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
개발자 취준
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AI가 개발자를 대체한다는 요즘에 개발자 취준생은 어떻게 취업 준비를 하면 좋을까요 ? ㅠㅠ
-
미해결김영한의 실전 자바 - 중급 2편
문제와 풀이1 Ex2와 Ex3
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Ex2에서는 fori를 사용해야 하고, Ex3에서는 iter을 사용해도 되는 이유와 둘의 차이가 궁금합니다:)
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
sdkVersion 오류 해결
build.gradle 파일>android>defaultConfig 에서 sdk 버전 수정할 때 계속 오류가 생겼는데, 계속 시도해봤더니 동일 파일에 있는 ndkVersion = "27.0.12077973"로 버전을 변경해보라는 코드가 떠서 변경했더니 해결됐어요!ndkVersion = "27.0.12077973"로 변경minSdk = 21 로 입력이렇게 해서 해결했습니다 동일한 오류 생기는 분들 참고하세요!
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Slack 연동 시 질문입니다!
Slack 부분이 재밌을 것 같아서 먼저 보면서 따라해보고 있습니다!근데 궁금한게 현재 Docker를 이용해서 local로 진행을 하고 있는데요!선생님처럼 어떻게 url 도메인이 있는걸까요???
-
미해결[최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
vscode 자동 저장 시 탭 사이즈 조절 안되고 있습니다..
.vscode 디렉토리까지 생성이 돼서 안에 settings.json 파일에 { "eslint.enable": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, "editor.tabSize": 2, }이렇게 내용 들어가 있는데 저장을 해도 탭 사이즈 조절이 안됩니다.. 강의 내용에서처럼 no-console을 주석한 뒤 lint 돌렸을때 warning 경고가 뜨는 걸 봐서는 설정은 잘 먹고 있는거 같긴한데 뭘 봐야할까요
-
해결됨GPT로 자동 월급받는 방법, AI시대 돈버는 사람은 따로있다[AI수익화 1위 작가]
강의 영상속 자료 부탁드립니다.
안녕하세요? 강의 잘듣고 있습니다.오프라인 정모같은건 계획이 없으신가요?있으시면 참여하고 싶습니다. 그리고 저도 아래 강의자료 문의하신분 처럼 영상에 있는 자료 와 프롬프트엔지니어링(선물) 부탁드립니다.^^w3ksh@naver.com좋은 강의 만들어주셔서 감사합니다.
-
해결됨회로설계 입문자를 위한 디지털, 아날로그 설계와 실무 Project
single stage amp 시뮬레이션 질문드립니다
왜 SPICE output log가 안나오는지 잘 모르겠습니다.어느 부분에서 잘못 설정한걸까요?
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
ch4-6 관리자 계정 로그아웃 , 삭제 관련
7:27 시점에서, 터미널에서 선생님은,,eyJhbGcioiJOUzI1N,......주소명이 뜹니다만,,,저의 경우, 아래와 같이 몽고DB에 연결이 되었습니다만 뜹니다.... 이 경우 어떻게 해야할가요... [nodemon] starting node index.js[dotenv@17.2.1] injecting env (2) from .env -- tip: 🔐 prevent committing .env to code: https://dotenvx.com/precommitServer is runningMongoDB와 연결이 되었습니다.[nodemon] restarting due to changes...[nodemon] starting node index.js[nodemon] restarting due to changes...[nodemon] starting node index.js[dotenv@17.2.1] injecting env (2) from .env -- tip: ⚙ suppress all logs with { quiet: true }Server is runningMongoDB와 연결이 되었습니다. 아래는 routes폴더에 있는 user.jsconst 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"); if(!user) { return res.status("401").json({message: "사용자를 찾을 수 없습니다."}); } if(!user.isActive){ return res .status(401) .json({ message: "비활성화된 계정입니다. 관리자에게 문의 주세요."}); } if(user.isLoggedIn){ 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.ipAddress = ipAddress; } catch (ipError) { console.error("IP 주소를 가져오는 중 오류 발생:", ipError.message); } await user.save(); const token = jwt.sign( { userId: user._id, username: user.username }, process.env.JWT_SECRET, { expiresIn: "24h" } ); res.cookie("token", token, { httpOnly: true, secure: "production", sameSite: "strict", maxAge: 24 * 60 * 60 * 1000, }); const userWithoutPassword = user.toObject(); delete userWithoutPassword.password; res.json({ user: userWithoutPassword }); } catch (error) { console.error("서버 오류:", error.message); res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); router.post("/logout", async (req, res) => { 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; env.에 표기한 부분MONGO_URI=mongodb+srv://sungwon5623:cho121101!@sungwon.oirqw5d.mongodb.net/?retryWrites=true&w=majority&appName=Sungwon JWT_SECRET=c21b6ba5372fa2b8 models폴더에 있는 User.jsconst mongoose = require("mongoose"); const userSchema = new mongoose.Schema( { username: { type: String, required: true, trim: true, minlength: 2, maxlength: 30, }, password: { type: String, required: true, select: false, }, isLoggedIn: { type: Boolean, default: false, }, isActive: { type: Boolean, default: true, }, failedLoginAttempts: { type: Number, default: 0, }, lastLoginAttempt: { type: Date, }, ipAddress: { type: String, trim: true, }, createdAt: { type: Date, default: Date.now, }, }, { timestamps: true, } ); const User = mongoose.model("User", userSchema); module.exports = User;
-
해결됨실전 jOOQ! Type Safe SQL with Java
generate dao 를 통한 삽입 시 pk auto-increment 가 적용되지 않습니다
Kotlin, Groovy gradle, PostrgreSQL 기반으로 프로젝트 세팅이 되어 있습니다 @Repository class ActorRepository( private val dsl: DSLContext, configuration: Configuration ) { private val actorDao = ActorDao(configuration) companion object { private val ACTOR = JActor.ACTOR } fun save(actor: Actor): Unit = actorDao.insert(actor) }이러한 방식으로 Repository 가 구현되어 있을 때, @SpringBootTest class ActorRepositoryTest( private val actorRepository: ActorRepository, ): StringSpec({ "insert test" { val actor = Actor().apply { firstName = "John" lastName = "Doe" } println("Actor before insert: $actor") val insertedActor = actorRepository.save(actor) } }) { override fun extensions() = listOf(SpringExtension) } 위 쿼리가 실행됩니다제가 예상했던 insert into "actor" ("first_name", "last_name") values(?, ?) 과는 다르게 id 값이 0으로 고정되어 생성되더라구요generate dao 를 생성하는 방법이 잘못된 걸까요?
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
DataGrip 사용시
안녕하세요! 학교에서는 MYSQL Workbench 가 아니라 Datagrip 을 사용할거라고 말씀해주셨는데, 이 강의를 통해서 MYSQL Workbench 를 배워도 다시 또 Datagrip 을 배워야 하는건가요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
한글 깨짐
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.콘솔창이 깨지는데 관리자 옵션으로 beta체크도 해보고 gradle.properties도 해보고 build.gradle에 넣어보라는거 전부 넣어보고 코드 명시로도 해봤는데 안됩니다. 어떻게 해야 할까요
-
미해결프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
실행오류
똑같이 코드 작성했는데 왜 오류가 나는건지 모르겠어요 ㅠㅠ!
-
미해결[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편
React19에서 useRef 타입 정의의 변화
안녕하세요 제로초님!질문은 아니고, 제가 강좌를 보다가 알게 된 사실을 전해드리고 싶은데 질문답변 게시판 외에 마땅치가 않아 이곳에 남깁니다.이미 알고 계실 수도 있지만, React 19에서는 useRef 타입 정의에 MutableRefObject 자체가 사라진 것 같아요! 혹시 강좌 리뉴얼하시거나 할 때 참고하시면 좋을 것 같습니다ㅎㅎ//v19 function useRef<T>(initialValue: T): RefObject<T>; function useRef<T>(initialValue: T | null): RefObject<T | null>; function useRef<T>(initialValue: T | undefined): RefObject<T | undefined>항상 감사합니다~
-
해결됨두고두고 써먹는 유니티 VR
ray 가 하나만 나가는데 문제가 뭘까요
controller tracking 설정까지 끝냈는데, 핑크색상으로 ray가 두개가 안나가고 하나만 나가는데 문제가 뭘까요?
-
해결됨데이터 분석 SQL Fundamentals
조인실습03 - join의 pk-fk join
안녕하세요 조인실습03 - 8:25에서 join 관련 질문입니다. [ 이해한 내용 ]- shippers의 shipper_id - orders의 ship_via컬럼명만 다를 뿐, shipper_id가 pk컬럼인데,orders에서 fk로 만들 때 ship_via로 만든 것이다.그래서 두 컬럼이 조인된다. [ 궁금한 사항 ]두 컬럼이 PK - FK 관계라는 판단 근거가 어떻게 되나요?Dbeaver에서 이를 쉽게 확인할 수 있나요?제가 수강한 진도까지는 이러한 내용이 나오지 않고ERD를 봐도 모르겠어서 질문드립니다.
-
미해결데이터 분석 SQL Fundamentals
조인실습03 - join의 pk-fk join
안녕하세요 조인실습03 - 8:25에서 join 관련 질문입니다. [ 이해한 내용 ]- shippers의 shipper_id - orders의 ship_via컬럼명만 다를 뿐, shipper_id가 pk컬럼인데,orders에서 fk로 만들 때 ship_via로 만든 것이다.그래서 두 컬럼이 조인된다. [ 궁금한 사항 ]두 컬럼이 PK - FK 관계라는 판단 근거가 어떻게 되나요?Dbeaver에서 이를 쉽게 확인할 수 있나요?제가 수강한 진도까지는 이러한 내용이 나오지 않고ERD를 봐도 모르겠어서 질문드립니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
K8s 대시보드의 신규 리소스 생성시 이슈
대시보드에서 복사해서 내용 넣었을 때해당과 같은 이슈가 발생하시는 분들 계시면..vi 로 yaml 하나 만들어서 붙여넣은 뒤에chmod +x ~.yamlk apply -f ~.yaml하니까 가능합니다.혹시 헷갈리시는 분들 참고!!!...
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
55. 네트워크 프로그램5 - 자원정리2 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.섹션9 : 네트워크 - 프로그램255. 네트워크 프로그램5 - 자원 정리2 여기 SessionV5에서 try-with-resources를 적용하기 위해 try에 소캣 input, output 다 넣는데 제가 실수로 socket을 넣지 않고 다른 코드 다 작성후 코드를 실행했는데 마지막에 잘 정리된건지 확인하는 로그log("연결 종료 : " + socket + "isClosed : " + socket.isClosed());여기서 true로 나오는데 이건 윈도우라서 그런건가요? 부가 설명부분에 윈도우 os는 tcp연결 강제 종료하기때문에 EOFExcepoin이 아니라 SocketException : Connection reset 이런 예외가 발생한다고 설명이 되어있어서 소캣을 빼먹고 자원정리해도 그냥 정리된 상태로 표시되는건지 궁금합니다.