묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한 요청드립니다.
인프런 아이디 : ul4382인프런 이메일 :ul4382@naver.com깃헙 아이디 : ul4382@hansung.ac.kr깃헙 Username :ul4382 github 권한 요청드립니다!
-
미해결실전! 스프링 데이터 JPA
테스트 메인 클래스
안녕하세요. test 패키지 밑에 DataJpaApplicationTest 라는 클래스가 자동생성되지 않은 것 같은데 왜 이런 현상이 있나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
ShareDB를 웹DB와 합칠경우
먼저 좋은강의 너무 감사드립니다. 현재 AWS에 WEB서버에 AccountDB 설정해서 로그인과 회원가입은 JSON으로 처리했습니다. 강의 내용중 ShareDB를 ServerDB와 같은 로컬에 있을경우에 대해서 설명 주셨는데, 혹시 ServerDB를 AccountDB와 같이 사용할경우 Server측에서 해당 서버정보를 JSON으로 처리 할려고 하는데 괜찬을지 문의 드립니다. 편한시간에 회신 부탁드립니다. 참고로 저는 웹개발쪽만 30년정도 하다가 만들고 싶은 겜이 있어서 더 늦기 전에 만들어 볼려고 한땀한땀 걸어가고 있습니다. 다소 생뚱맞는 질문이더래도 양해 부탁드립니다^^
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
Redux + onClick
제로초님 안녕하세요 강의 잘 보고있습니다 감사합니다 ^^ 제로초님 리덕스 강의를 보고 응용하여 제 나름 컴포넌트를 하나 만들어보고 있는데요, 아래와 같이 2개의 객체 배열을 이용하여 맵함수로 헤더메뉴를 그리는 코드입니다. onClick 이벤트 사용 시 화살표 함수로 선언해주면 해당 onClick 이벤트를 클릭하지 않는 이상 렌더링 이후 실행되지 않는 걸로 알고 있습니다. 1. 최초 렌더링 시에는 아래 두개 onClick이벤트가 실행 되지는 않습니다. 2. 이후 첫번째 onClick={(e)=>onPrimary(index, e)} 클릭 시 두번째 onClick={(e)=>onSecondary(index, num, e)}도 실행 되지는 않습니다. [문제 위치] 3. 두번째 onClick={(e)=>onSecondary(index, num, e)} 클릭 시 해당 클릭된 함수 실행 이후 첫번째 onClick이벤트도 같이 실행되는데 원인이 뭔지 모르겠네요, 이틀째 붙잡고 헤매다 질문드립니다.
-
해결됨게임 프로그래머 취업 전략 가이드
회사 면접 볼 때
회사에서 면접 볼 때 포토폴리오를 많이 본다고 하셨는데요, 혹시 자격증이나 대학교 학점도 많이 보는지 궁금합니다. 다른 it분야에서는 학점도 꽤 보고 자격증도 보는데가 있는데, 게임쪽은 어떤지 여쭤보고 싶습니다.
-
미해결홍정모의 따라하며 배우는 C언어
매크로 인식 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 매크로를 이용한 기호적 상수 실습을 하다가 오류가 뜨고 궁금한 점이 생겨 질문드립니다. 일단 아래와 같은 코드를 작성했습니다. 이 코드를 실행했을 때 E0075 operand of '*' must be a pointer but has type "float" 위와 같은 에러 문구가 뜹니다. PI를 3.141592f로 매크로를 사용하지 않고 작성했을 때는 에러가 뜨지 않습니다. 아무래도 매크로 상수를 인식하지 못해서 radius 앞에 *을 곱하기 연산자가 아니라 포인터 연산으로 인식한 거 같은데 이를 어떻게 해야 해결할 수 있을까요? 감사합니다.
-
미해결엑셀 매크로와 VBA 기초부터 실무활용까지 완전 정복
파일시트 취합하기 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서안녀비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요?강의 듣고 실무에 적용하다가 오류가 나서 문의드립니다. Sub 시트취합() Dim 시트 As Worksheet For Each 시트 In Worksheets If 시트.Name <> "전체" Then 시트.Range("A2", 시트.Range("A2").End(xlToRight).End(xlDown)).Copy Sheets("전체").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial End If Next End Sub 를 활용하려는데요데이터는 인터넷에서 다운 받은 자료고요 예시로 파일 올립니다. 문의드립니다제가 시트 취합하려는 데이터 이렇게 중간 셀에 값이 없는 경우 ctrl+shrft+↓ 누르면 열 12까지 밖에 드래그가 안됩니다. 그래서 이렇게 되고요시트도 여러개가 있는데 1시트+일부시트 내용만전체시트에 복사 됩니다.오류 해결 방법을 알 수 있을까요?!시트별 열너비 행 높이가 달라서 이러는 건가요?!확인 부탁드립니다.
-
미해결자바스크립트 중고급: 엔진 핵심
fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ
// 정리 시간 var book = { value: 123, get: function() { var value = 456; console.log(this === window); console.log(this.value); } }; var fn = book.get; fn(); // true // false // undefined 정리 시간1을 공부하면서 fn() 함수 호출 시 새롭게 할당된 function 오브젝트인 fn() 함수 안으로 들어가는 것인지아니면 book.get 함수 안으로 들어가는 것인지 궁금해서 첫 줄에 debugger를 작성하여 한 줄씩 이동해서 확인해봤더니book.get 함수 안으로 이동하는 것을 확인했습니다. 근데 저는 왜 새롭게 할당된 fn 함수 안으로 엔진이 이동을 안하는 것인지 궁금합니다. 그래서 이것이 설정이 아니라 참조인가 해서확인하려고 다음과 같은 코드를 실행했습니다. var book = { value: 123, get: function() { var value = 456; console.log(this === window); console.log(this === book); console.log(this.value); } }; var fn = book.get; fn(); // true, false, undefined book.get(); // false, true, 123 var book = { value: 111, get: function() { console.log(this.value); } } fn(); // true, false, undefined book.get(); // 111 마지막에서 두 번째 줄인 fn() 함수는 그대로 처음 할당된 book 오브젝트를 경로로 get 함수에 들어가고마지막 줄인 book.get() 함수는 마지막에 할당된 book 오브젝트를 경로로 들어가는 것을 확인해서 참조는 아닌 것을 확인했습니다. 왜 fn 함수와 book.get은 서로 다른 독립적인 function 오브젝트이면서 fn() 함수를 호출했을 때 book 오브젝트 안의 get 함수 안으로 엔진이 이동하는 것인지 궁금합니다....ㅠㅠㅠㅠㅠ 그리고 debugger 창을 열어서 확인했는데 fn function 오브젝트의 name 프로퍼티 값으로 "get"이 할당되어있던데 이거와 관련이 있는 것인지 궁금합니다!!...ㅠㅠㅠㅠㅠㅠㅠ
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
Cast to ObjectId failed for value라는 에러 발생합니다!
수강생분들의 질문을 기다립니다! - 에러에 해당하는 질문은 "에러가 발생한 상황에 대한 충분한 설명", "에러 메세지", "에러가 난 코드 스크린샷"을 함께 첨부해주세요. - 언어에 해당하는 질문은 구글링 및 서치 후에 구체적으로 질문해주시면 좋습니다. - 간단한 진로 및 방향성에 대한 질문은 메일로 보내주세요.- 패키지 버전 관리은 실무 환경과 트랜드에 맞추어 강의를 업데이트 하고 있습니다. 강의를 그대로 따라갔는데 에러가 발생한다면 패키지 버전을 강의에서 사용하는 버전과 동일하게 맞춰주세요!- 강의 노트, QA 목록, 공지 사항을 먼저 확인해주세요.- 논리적이고 구체적인 질문은 학습 효과를 올립니다 :) comments.service import { CatsRepository } from 'src/cats/cats.repository'; import { Comments } from './../comments.schema'; import { CommentsCreateDto } from './../dto/comments.create.dto'; import { BadRequestException, Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; @Injectable() export class CommentsService { constructor( @InjectModel(Comments.name) private readonly commentsModel: Model<Comments>, private readonly catsRepository: CatsRepository, ) {} async getAllComments() { try { const comments = await this.commentsModel.find(); return comments; } catch (error) { throw new BadRequestException(error.message); } } async createComment(id: string, commentData: CommentsCreateDto) { try { const targetCat = await this.catsRepository.findCatByIdWithOutPsw(id); const { contents, author } = commentData; const validatedAuthor = await this.catsRepository.findCatByIdWithOutPsw( author, ); const newComment = new this.commentsModel({ author: validatedAuthor._id, contents, info: targetCat._id, }); return await newComment.save(); } catch (error) { throw new BadRequestException(error.message); } } async plusLike(id: string) { try { const comment = await this.commentsModel.findById(id); comment.likeCount += 1; return await comment.save(); } catch (error) {} } } { "success": false, "timestamp": "2022-02-22T10:53:22.484Z", "statusCode": 400, "message": "Cast to ObjectId failed for value \"66213fe65d99f4623dae55787\" (type string) at path \"_id\" for model \"Cat\"", "error": "Bad Request" } jwt.strategy에서는 payload에 있는 sub.id 역시 스트링으로 잘 넘어갔는데 왜 쿼리 id는 오류가나는지 궁금합니다 https://github.com/minjamie/NestJS-A-to-Z 깃허브 주소 남깁니다!
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
기능사 실기 시험 준비 문의 드립니다
안녕하세요 선생님, 혹시 실기범위 12개 중에서 가로고정형 1개, 가로100% 1개, 세로2컬럼 1개 이렇게 총 3강의를 보여주셨는데, 나머지 9개 는 자료같은건 스스로 아무 내용이나 만들어보고 이미지 아무거나 가져와서 만들어서 연습을 하면 될 까요? 따로 연습할 자료를 구할 수 있는 방법이 있는건지요ㅠㅠ
-
해결됨Flutter 중급 1편 - 클린 아키텍처
중복된 페이지에서 같은 ViewModel이 여러 개 필요할 때
강의에서 ViewModel은 provider_setup.dart 파일을 별도로 만들어서 의존성 주입을 해줬는데요. 중복된 페이지에서 페이지별로 ViewModel이 필요할 때는 어떤 방법이 좋을까요? 예를 들어, FeedPage가 있는데 이 FeedPage에는 새로운 FeedPage를 여는 버튼이 있을 수 있습니다. 이 버튼을 누르면 새로운 FeedPage가 열리는데 1번 FeedPage에서 2번 FeedPage를 여는 식이죠. 추가적으로 3번, 4번 등 계속해서 새로운 FeedPage를 열 수 있고요. 이때, FeedPage의 상태를 FeedViewModel에서 관리해야 하는데 중첩된 FeedPage가 4개면, 총 4개의 FeedViewModel이 필요한데 강의처럼 최상위에서 하나의 ViewModel만 생성하면 이게 어렵더라고요. class FeedPage extends StatelessWidget { const FeedPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { final viewModel = FeedViewModel(); return ChangeNotifierProvider<FeedViewModel>.value( value: viewModel, child: Scaffold(...), ); }} 제가 생각한 방법은 최상위에서 하나의 ViewModel만 생성하는 게 아니라 FeedPage의 build() 안에서 각자 ViewModel을 생성하고, 페이지 전체를 Provider로 감싸서 하위 위젯에 의존성을 주입하는 건데 괜찮은 방법일까요, 아니면 혹시 더 나은 방법이 있을까요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
inner join절 질문 있습니다!
문제풀이 해주신 쿼리를 여러번 써보며 학습하고 있습니다~ 만약 submission table이나 다른 테이블에 NULL 값이 존재했다면 inner join이 아니라 left join을 사용해서 문제를 풀어도 될까요?
-
미해결배달앱 클론코딩 [with React Native]
안녕하세요 질문드립니다
설정한 인증서를 다운받는 항목에서 현영님은 Development와 Production이 활성화 되어있는데 이게 둘 다 활성화 되어있어야하는것인가요? *.CertificateSigningRequest 파일을 Production에도 넣어서 활성화 시켜야하는 것인지 궁금합니다. 감사합니다.
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
1강2강에 있는 csv파일을 다운받으면 한글이 깨져서 나와요
1. 제목 그대로 입니다. csv파일 한글이 엑셀에서 깨져서 보여요. 2. code에서 utf8로 했을때 에러가 나는데 cp949로 하면 에러가 안 나기도 하고요. 차이좀 알수 있을까요?
-
미해결
리뉴얼 관련 궁금한 사항
안녕하세요 다름이아니라 리뉴얼 시스템에 관련해서 궁금한 것이 있습니다. 제가 강의를 산게 몇개 있는데 한 1~2년 정도는 볼 시간이 없어서 못 볼 것 같아서요(새해급 할인이 다시 안올줄알고 샀는데......) 무제한 강의인데 만약 그 강의가 리뉴얼되면 새로운 리뉴얼 버전으로 들울 수 있는건가요?? 보통 리뉴얼이 다른 강의페이지로 나오나요? 이전 버전은 그대로있고? 그게 아니라면 설마.. 강의 구입을 새로해야하는건가요?? 그건 아니겠죠? 등등 관련해서 전반적인 리뉴얼 시스템이 궁금합니다.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
axi4 lite i/f write data 관련 질문 드립니다.
안녕하세요 맛비님. axi4 lite code 리뷰 중 질문 있어서 글 남깁니다. code line 274-279 slv_reg0-3은 레지스터로 알고 있는데 default로 저렇게 처리해주는 이유가 궁금합니다. 굳이 처리 안 해줘도 slv_reg는 자기 값 그대로 가지고 있을 것 같은데 latch 생성을 막기 위해서 저렇게 처리를 한건가요? slv_reg의 값이 다시 slv_reg의 입력으로 들어가는게 잘 이해가 안되서요.
-
해결됨PHP 7+ 프로그래밍: 객체지향
AuthService::logout 메소드에서 Session 데이터를 비우는 방법에 대한 질문입니다.
안녕하세요, '로그아웃' 구현 부분에서 세션을 비우는 처리에 대해 질문드립니다. 만약, 운영중인 사이트를 이용한다고 가정했을 때 아래와 같이 대부분이 로그인 및 로그아웃 절차가 진행된다고 생각합니다. 1. 홈페이지 로그인: 세션에 유저 데이터 생성 2. 홈페이지 이용 3. 브라우저를 닫거나 로그아웃 버튼 클릭: 세션이 완전이 사라지거나, 세션은 있되 세션에서 유저 정보가 비워짐 3번 항목에서 보통 PHP에서 세션을 비울 때(삭제할 때) 아래 두 함수를 쓰는 모습을 볼 수 있었는데요. 1. session_destory() => 전체 세션을 삭제(예로 세션 저장소(파일시스템의 세션 파일 또는 DB의 세션 관리 Table의 세션 데이터)) 2. session_unset() => 세션에서 변수만 삭제(CODE E) $_SESSION = array();) 이 외 세션에서 '유저' 정보만 비우는 경우(CODE EX) $_SESSION['user'] = array();)에는 어떤 경우가 있는지 알 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
통합 테스트 시에 오류가 발생합니다.
현재 통합테스트 모든 메서드가 실패를 하고 있습니다. Wrong user name or password 에러 때문에 아예 h2 데이터베이스에 접속조차 안되고 있는 것 같습니다. 현재 application.properties 파일에서는 username 또한 sa 로 설정하였고 끝에 공백 또한 없는 것을 확인했습니다. 왜 이런 오류가 발생하는 걸까요...? ㅠㅠ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
RIP 레지스터
안녕하세요 다름이 아니라 rip 레지스터에 대해서 궁금한 게 있는데 rip 레지스터의 정의에 대해서 검색을 하니 1. 현재 수행 중인 명령의 주소를 가리키는 레지스터 2. 다음 수행 명령의 주소를 가리키는 레지스터로 나와있는데 2가지 의미가 동일한 의미인 것인가요? 아무리 생각해도 1번과 2번이 동일한 의미로 생각되지가 않습니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
너무 답답해요 ㅠㅠ POST http://localhost:3000/api/video/uploads net::ERR_FAILED 라고만 뜹니다.
다른 에러 로그도 안 뜨니 사람 미치고 팔짝 뛸 노릇이네요. 몇시간째 삽질 중인데 해결방책이 안 나와요. 검색해봐도 cors관련 에러 해결만 뜨고.... server/index.js const express = require('express'); const router = express.Router(); const multer = require('multer'); //var ffmpeg = require('fluent-ffmpeg'); //const { Video } = require("../models/Video"); //const { Subscriber } = require("../models/Subscriber"); //const { auth } = require("../middleware/auth"); const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'uploads/') }, filename: (req, file, cb) => { cb(null, `${Date.now()}_${file.originalname}`) } }) const fileFilter = (req, file, cb) => { // mime type 체크하여 원하는 타입만 필터링 if (file.mimetype == 'video/mp4' ) { cb(null, true); } else { cb({msg:'mp4 파일만 업로드 가능합니다.'}, false); } } const upload = multer({ storage: storage, fileFilter: fileFilter }).single("file") router.post("/uploads", (req, res) => { upload(req, res, err => { if (err) { return res.json({ success: false, err }) } else { return res.json({ success: true, filePath: res.req.file.path, fileName: res.req.file.filename }) } }) }); module.exports = router; [routes/video.js] const express = require("express"); const app = express(); const bodyParser = require("body-parser"); const cookieParser = require("cookie-parser"); const config = require("./config/key"); // const mongoose = require("mongoose"); // mongoose // .connect(config.mongoURI, { useNewUrlParser: true }) // .then(() => console.log("DB connected")) // .catch(err => console.error(err)); const mongoose = require("mongoose"); const connect = mongoose.connect(config.mongoURI, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB Connected...')) .catch(err => console.log(err)); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(cookieParser()); app.use('/api/users', require('./routes/users')); app.use('/api/video', require('./routes/video')); //app.use('/api/subscribe', require('./routes/subscribe')); //app.use('/api/comment', require('./routes/comment')); //app.use('/api/like', require('./routes/like')); //use this to show the image you have in node js server to client (react js) //https://stackoverflow.com/questions/48914987/send-image-path-from-node-js-express-server-to-react-client app.use('/uploads', express.static('uploads')); // Serve static assets if in production if (process.env.NODE_ENV === "production") { // Set static folder app.use(express.static("client/build")); // index.html for all page routes app.get("*", (req, res) => { res.sendFile(path.resolve(__dirname, "client", "build", "index.html")); }); } const port = process.env.PORT || 5000 app.listen(port, () => { console.log(`Server Running at ${port}`) }); [VideoUploadPage.js] import React, { useState } from 'react'; import { Typography, Button, Form, message, Input, icon } from 'antd'; import Dropzone from 'react-dropzone'; import * as axios from 'axios'; import icons from '@ant-design/icons'; const { TextArea } = Input; const { Title } = Typography; const PrivateOptions = [ {value: 0, label: "Private"}, {value: 1, label: "Public"} ]; const CategoryOptions = [ {value: 0, label: "Film & Animation"}, {value: 1, label: "Autos & Vehicles"}, {value: 2, label: "Music"}, {value: 3, label: "Pets & Animals"} ]; function VideoUploadPage(props) { const [VideoTitle, setVideoTitle] = useState(""); const [Description, setDescription] = useState(""); const [Private, setPrivate] = useState(0); const [Category, setCategory] = useState("Film & Animation"); const onTitleChange = (e) => { setVideoTitle(e.currentTarget.value); } const onDescriptionChange = (e) => { setDescription(e.currentTarget.value); } const onPrivateChange = (e) => { setPrivate(e.currentTarget.value); } const onCategoryChange = (e) => { setCategory(e.currentTarget.value); } const onDrop = (files) => { let formData = new FormData; const config = { header: { 'content-type': 'multipart/form-data' } } //console.log(files) formData.append("file", files[0]) axios.post('/api/video/uploads', formData, config) .then(response => { if(response.data.success) { console.log(response.data); } else { alert('Video upload failed'); } }) } const onSubmit = () => { console.log('submit'); } return ( <div style={{ maxWidth: '700px', margin: '2rem auto' }}> <div style={{ textAlign: 'center', marginBottom: '2rem' }}> <Title level={2}>Upload Video</Title> </div> <Form onSubmit> <div style={{ display: 'flex', justifyContent: 'space-between' }}> {/* Drop zone */} <Dropzone onDrop={onDrop} multiple={false} maxSize={800000000}> {({ getRootProps, getInputProps }) => ( <div style={{ width: '300px', height: '240px', border: '1px solid lightgray', display: 'flex', alignItems: 'center', justifyContent: 'center' }} {...getRootProps()} > <input {...getInputProps()} /> <icon type="plus" style={{ fontSize: '3rem' }} /> </div> )} </Dropzone> {/* Thumbnail */} <div> <img src alt /> </div> </div> <br /> <br /> <label>Title</label> <Input onChange={onTitleChange} value={VideoTitle} /> <br /> <br /> <label>Description</label> <TextArea onChange={onDescriptionChange} value={Description} /> <br /> <br /> <select onChange={onPrivateChange}> {PrivateOptions.map((item, index) => ( <option key={index} value={item.value}>{item.label}</option> ))} </select> <br /> <br /> <select onChange={onCategoryChange}> {CategoryOptions.map((item, index) => ( <option key={index} value={item.value}>{item.label}</option> ))} </select> <br /> <br /> <Button type="primary" size="large" onClick={onSubmit}> Submit </Button> </Form> </div> ); } export default VideoUploadPage;