묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. 값 타입 컬렉션에 대해서 궁금한 점이 있습니다.!
영한님 안녕하세요. 좋은 강의 항상 잘 듣고 있습니다. 정말 감사합니다. 다름이 아니라 값 타입 컬렉션을 공부하던 중에 조금 이해 안가는 부분이 있어서 질문드립니다. 값 타입 컬렉션의 대안으로 일대다 관계를 고려한다고 하셨는데, @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = "MEMBER_ID") private List<AddressEntity> addressHistory = new ArrayList<>(); 이런 경우라면 한명의 MEMBER가 하나의 addressHistory라는 list에 여러 address를 가지고 있기 때문에 1:1 관계가 아닌가요?? 결국 MEMBER는 한개의 addressHistory (쉽게 말해 주소록)을 가지고 그 하나의 주소록 안에 여러 address들이 포함되어 있는 것 같은데 어떻게 해서 oneToMany 관계가 성립되는지 궁금합니다. 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
더보기 버튼이 안 보입니다
안녕하세요 선생님 좋은 강의 잘 듣고 있습니다 이미지를 8개 이상 업로드 한 후 제가 더보기 버튼 만들기 #1과 #2를 들었는데 코드를 다 작성하고 보니까 나중에 더보기 버튼이 사라졌습니다 제가 작성한 코드는 아래와 같습니다 웹에서 더보기 버튼을 누르지도 않았는데 왜 더보기 버튼이 사라졌는지 파악이 안 되네요ㅜㅜ ============================================================================================ ============================================================================================= routes 에 있는 product.js 코드 const express = require('express'); const router = express.Router(); const multer = require('multer'); const { Product } = require('../models/Product'); // Product var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, `${Date.now()}_${file.originalname}`) } }) var upload = multer({ storage: storage }).single("file") router.post('/image', (req, res)=> { // 가져온 이미지를 저장 해주면 된다. upload(req, res, err => { if(err) { return req.json({success: false, err}) } return res.json({success: true, filePath:res.req.file.path, fileName: res.req.file.filename }) }) }) router.post('/', (req, res)=> { // 받아온 정보들을 DB에 넣어 준다. const product = new Product(req.body); product.save((err) => { if(err) return res.status(400).json({ success: false, err}) return res.status(200).json({ success: true}) }) }) router.post('/products', (req, res)=> { // product collection에 들어 있는 모든 상품 정보들을 가져오기 let limit = req.body.limit ? parseInt(req.body.limit) : 20; let skip = req.body.skip ? parseInt(req.body.skip) : 0; Product.find() .populate("writer") .skip(skip) .limit(limit) .exec((err, productInfo)=> { if(err) return res.status(400).json({ success: false, err}) return res.status(200).json({ success: true, productInfo, postSize: productInfo.length}) }) }) module.exports = router; ============================================================================================= LandingPage.js 에 있는 코드 import React, {useEffect, useState} from 'react' import { FaCode } from "react-icons/fa"; import axios from "axios"; import {Icon, Col, Card, Row, Carousel} from 'antd'; import Meta from 'antd/lib/card/Meta'; import ImageSlider from '../../utils/ImageSlider'; function LandingPage() { const [Products, setProducts] = useState ([]) const [Skip, setSkip] = useState(0) const [Limit, setLimit] = useState(8) const [PostSize, setPostSize] = useState(0) useEffect(() => { let body = { skip: Skip, limit: Limit } getProducts(body) }, []) const getProducts = (body) => { axios.post('/api/product/products', body) .then(response => { if(response.data.success) { if(body.loadMore) { setProducts([...Products, ...response.data.productInfo]) } else { setProducts(response.data.productInfo) } setPostSize(response.data.PostSize) } else { alert("상품들을 가져오는데 실패 했습니다.") } }) } const loadMoreHandler = () => { let skip = Skip + Limit let body = { skip: skip, limit: Limit, loadMore: true } getProducts(body) setSkip(skip) } const renderCards = Products.map((product, index)=> { return <Col lg={6} md={8} xs={24} key={index} > <Card cover={<ImageSlider images={product.images}/>} > <Meta title={product.title} description={`$${product.price}`} /> </Card> </Col> }) return ( <div style={{ width: '75%', margin: '3rem auto'}}> <div style={{ textAlign: 'center'}}> <h2>Let's Travel Anywhere <Icon type="rocket" /></h2> </div> {/* Filter */} {/* Search */} {/* Cards */} <Row gutter={[16, 16]} > {renderCards} </Row> <br /> {PostSize >= Limit && <div style={{ display: 'flex', justifyContent: 'center'}}> <button onClick={loadMoreHandler}> 더보기 </button> </div> } </div> ) } export default LandingPage ============================================================================================= ImageSlider.js에 있는 코드 import React from 'react' import {Icon, Col, Card, Row, Carousel} from 'antd'; function ImageSlider(props) { return ( <div> <Carousel autoplay> {props.images.map((image, index) => ( <div key={index}> <img style={{width: '100', maxHeight:'150px'}} src={`http://localhost:5000/${image}`} /> </div> ))} </Carousel> </div> ) } export default ImageSlider
-
미해결포토샵 기본기 하루 5분, 3주 만에 끝내기
레이어의 내용을 직접 편집할 수 없으므로 브러쉬 도구를 사용 할 수 없습니다
제목과 같은 경고문이 뜨는 데 이떻게 해야 한나요ㅜㅜ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
강사님 creact-react-app . 하실때 질문있습니다.
강사님 강사님께서 npx creact-react-app . 을 하셨을때 yarn.lock 과 serviceWorker.js가 생성되는데 제 컴퓨터에서는 저 두개 대신 reportWebVitals.js가 생성되네요 어떤 차이인지 궁금합니다. 혹시 이부분이 제가 전에 deploy를 시도 했을때 문제가 생기는 부분인가 싶습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
nodeJS response가 전달이 안될때
안녕하세요, 따로 프로젝트를 하던중에 궁금한게있습니다. 프론트는 nextJS이구요 이코드에서 문제없이 잘실행되고 database에 data 잘들어가는데 return res.send 이 부분이 프론트로 전해지질 않습니다. res.redirect를 해보기도하고 return을 빼보기도하고 여러가지 해봤는데도 안되네요. 혹시 이코드내에서만 return res가 안되는 이유를 알고계신가요 ㅠ?
-
미해결생활코딩 - React
빌드 관련 질문
강의를 보다보니 동일하게 npm run build를 사용하여 빌드가 되었지만 빌드안에 있는 파일들을 보니 동일하지가 않습니다. 첨부된 이미지 처럼 나오는데 왜그런지 알 수있을까요??
-
미해결대세는 쿠버네티스 (초급~중급편)
RestartPolicy는 안알려 주시나요? ㅠㅠ
크론잡 강의 때 파드 라이프 사이클에서 알려주신다고 해서요 ㅠㅠ 궁금해요
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
이거오류는 왜나는지 알수있을까요??
그리고혹시 npm run start 로 실행하고 npm run stop?? 처럼 멈추는건 어떻게하는지 궁금합니다! 뒤에서 알려주시나용?
-
미해결해외취업 ASP.NET Core 웹개발 기본 강좌
Identity 계정 생성 로직 강의에서 Register() 함수 호출 오류 문의
AccountController.cs 에서 Post로 데이터 전송시 Register() 함수가 수행되지 않고 있습니다. 회원가입 페이지를 불러오는 것까지는 정상 동작되나, 등록을 눌렀을 때 유효성 체크가 되지 않고 반응이 없습니다. data-val-required 가 실행되지 않는 것 같습니다. 강의와 동일하게 진행중인데..추가로 설정해야 할 코드가 있는지 문의드립니다. .Net Core 버전은 SDK 2.1 입니다.
-
미해결블록체인 De-fi를 활용하는 이더리움 Dapp 개발
개발 환경 설정은 알아서 해야하는 건가요?
2강에서 truffle-config.js 파일 내용을 보면, HDWalletProvider, INFURA 키값, rinkeby 설정값들에 대해 어떻게 설정해야한다는 말씀이 없으셨는데, 이러한 설정값들은 알아서 설정을 해야하는건가요? 아무런 가이드가 없이 그냥 이렇게 되어있다고 보여주기만 하셔서 여쭤봅니다.
-
미해결홍정모의 따라하며 배우는 C언어
재귀호출 팩토리얼 질문
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<ctype.h> #include<stdbool.h> #include<stdlib.h> int fact(int n)//n: parameter { int i=1; int fa = 1; if (i < n) { i++; fa *= i; fact(i); } return fa; } int main() { int num = 5; printf("%d\n", fact(num)); return 0; } 이렇게 코드를 짜보았는데 재귀함수를 사용할 때 원래변수 n이 아닌 i같은 다른변수를 사용하면 오류가 뜨나요? 컴파일 자체가 안됩니 다 ㅠㅠ
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
13:30 코끼리 그림에 대한 질문
서브샘플링된 피쳐맵에 모든 좌표에서 앵커박스가 생성되고 GT box와 같도록 학습되는 걸로 이해하고 있습니다. 코끼리 사진 같은 경우 사진의 거의 반정도를 차지하고 있어 여러개 좌표에서 생성되는 수많은 앵커박스들에 코끼리 GT box와 IoU값이 같은 것들이 많을거같은데 이러한 문제는 어떻게 해결되나요? 앵커박스의 최대 사이즈는 외각쪽을 제외하고는 다 같은데 앵커박스 내에 최대사이즈가 들어가면 다 똑같을거같아 궁금합니다
-
스프링 핵심 원리 - 기본편
초기화, 소멸 인터페이스 단점
삭제된 글입니다
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
질문있습니다
안녕하세요! 제로초님! 궁금한점은 cli로 생성한 models폴더안에 index.js의 코드를 지우는 이유가 궁금합니다. 저는 지금껏 코드에 있는 그대로 mysql을 사용해왔거든요! 실무에서도 직접 작성하는 방식으로 db를 사용하는 건가요??
-
해결됨스프링 핵심 원리 - 기본편
AutoAppConfigTest와 CoreApplicationTests 에 대한 질문이 있습니다.
안녕하세요, 선생님.질문 드릴게 있어서 글을 씁니다.질문은 [ 조회 빈이 2개 이상 - 문제 ] 강의에서 2:54 때 돌린 테스트와 관련된 것입니다. 2:54 에서 전체 테스트를 돌릴 때 AutoAppConfigTest는 테스트가 실패하고 CoreApplicationTests 는 성공합니다. 이 부분이 저는 의문입니다. 두 개의 테스트에서 사용하는 각각의 클래스는 아래와 같습니다. AutoAppConfigTest ==> AutoAppConfig 클래스 CoreApplicationTests ==> CoreApplication 클래스 그리고 두 클래스 모두 @ComponentScan을 사용하는 걸로 알 고 있습니다. 그런데 왜 AutoAppConfigTest 만 실패하는 건가요??제가 뭔가 잘못알고 있는 부분이 있는 걸까요??
-
해결됨빠르게 git - 핵심만 골라 배우는 Git/Github
add 관련 질문입니다
git add 하면 staging area로 옮겨진다고 하셨는데 수정사항이 발생하면 status 에서 modified 된거 있다고 뜨고 다시 add를 하시더라구요. 처음 제가 생각한 바로는 staging area 에 올라간 이상 tracking되고 있기 때문에 바로 commit을 해주면 되는 줄 알았는데 계속 add를 해주는걸 보니 깃은 변경사항이 있을때마다 그 변경사항을 commit하려면 새롭게 add를 매번 해줘야 하는건가요?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
passport/index.js로 이동
router.post('/login', isNotLoggedIn, (req, res, next) => { //미들웨어 안에 미들웨어 //두번재 인자는 done이 전달해줌 passport.authenticate('local', (authError, user, info) => { if (authError){ //없는 email일 경우 console.error(authError); return next(authError); } if(!user){ //비번틀린경우 return res.redirect(`/?loginError=${info.message}`); } return req.login(user, (loginError) => { //passport index.js 로간다 if(loginError) { console.error(loginError); return next(loginError); } //세션 쿠키를 브라우저로 보내준다 -> 로그인된 상태 return res.redirect('/'); //로그인 성공 }); }) (req, res, next); //미들웨어 안에 미들웨어에는 끝날때 (req, res, next)붙입니다. }); 여기서 passport.authenticate('local'...) 을 하거나 req.login을 할때 어떤 이유로 passport/ index.js로 가서 찾는것인가요? auth.js에는 passport에서 import 해준것이 아무것도 없는데 알아서 찾아가는 것이 궁금합니다 그리고 항상 그럼 폴더이름을 passport 로 파일은 index.js 로 해줘야 하는건가요?
-
미해결Javascript ES6+ 제대로 알아보기 - 초급
강의 자료
8:32 에 써두셨다는 강의 노트는 어디에서 확인할 수 있나요? 위의 강의 목차에 있는 md 파일로된 강의 노트는 다운로드 받았습니다.
-
미해결스프링 기반 REST API 개발
junit5 에서의 spring-restdoce 설정
junit5 환경에서 테스트 중에 REST Docs configuration not found. Did you forget to apply a MockMvcRestDocumentationConfigurer when building the MockMvc instance? 오류가 발생 하여 찾아 보던중 @ExtendWith({RestDocumentationExtension.class, SpringExtension.class}) public class JUnit5ExampleTests { 이렇게 진행 하라는 가이드가 확인 되어 @SpringBootTest @AutoConfigureMockMvc //@AutoConfigureRestDocs @ExtendWith({RestDocumentationExtension.class, SpringExtension.class}) public class EventControllerTests { 위와 같이 설정 하고 @BeforeEach public void setup(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) { this.mockMvc = MockMvcBuilders.webAppContextSetup(ctx) .addFilters(new CharacterEncodingFilter("UTF-8", true)) // 필터 추가 .apply(documentationConfiguration(restDocumentation)) .build(); } setup 추가 하여 진행 하였습니다. 혹시 다른 확인사항이나 @AutoConfigureRestDocs 이 적용이 안되는듯 한데 이게 적용이 안되면 다른 문제가 있는걸까요? junit4 에서 junit5 로 변경 될때 설정 사항은 링크 에서 확인 가능 합니다 https://docs.spring.io/spring-restdocs/docs/current/reference/html5/#getting-started-documentation-snippets-setup
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
서버사이드 관련, reducer state 관련
안녕하세요 제로초님! 기존에 올려주신 강의는 한바퀴 돌리고, 기능을 추가해서 배포 하고싶어 새롭게 만들어보고 있습니다. 1. 기존에 index 페이지에서 로그인, 포스트 로딩을 했던 것과 다르게, AWS에서 제공하는 무료 프리티어를 생각하여 서버사이드 렌더링적인 부분이 조금 덜 들어가더라도 폐쇄적인 상태로(로그인을 해야 주요 기능을 이용할 수 있도록)구성해 보았습니다! 다름이 아니라 로그인이나 로그아웃을 할 때, useEffect()를 통해 로그인 성공, 로그아웃 성공시 이를 감지하여 routing 처리하는 방향으로 개발하려 하는데, router.replace('/')를 통해 이전 페이지로 돌아가지 못하는 처리를 하더라도 reducer에서 기존에 작동했던 state(logoutDone)가 남아있어 약간 무한 반복? 되는 현상이 있습니다. [git checkout으로 과거 커밋으로 돌아가 SSR 전에 오류 관련 동영상을 땄습니다.] 로그인 뿐만 아니라, 회원가입에서도 반복되어 나타나고 있는데, 이렇게 useEffect()를 통해 loginDone, logoutDone을 감지하는 방향으로 가는 것이 아닌것 같아 어떻게 처리해야 하는지 질문 남깁니다. 기존 제로초님 강의에서 loadPosts 시에 생기는 오류를 처리할 때, 컴포넌트(components/ ...)에서 이런 상황이 발견되면 상위 컴포넌트(pages/ .... )로 해당 useEffect를 올려주어 사용했는데, (pages/index, 등등) 에서 이런 상황이 생기면 어디로 올려줘야 하는지.. 감이 잡히지 않습니다. ㅠㅠ 2. 추가적으로 제가 개발하고자 하는 방향이 인스타그램처럼 로그인하지 않아도(도메인을 통해 접근한다면) 게시물을 '볼 수'는 있고, 기능(댓글, 좋아요, 리트윗, 기타 등등)을 사용하려면 로그인을 해야 사용 가능하도록 만들고 싶은데, 로그인을 해야 기능을 사용할 수 있고 하지않으면, 포스트들을 '보기'만 가능한 상황에서 getServerSideProps를 쓰는 것이 맞을지도 궁금합니다. 도메인을 통해 main으로 접근하면, LOAD_USER_REQUEST를 사용하지 않아야 하는데, getServerSideProps에 reducer의 상태를 넣을 수 없는데, (me && context.store.dispatch({ type: LOAD_USER_REQUEST}) ) 이러한 방향은 서버사이드렌더링으로 미리 정보를 주려고 하는 상황과는 맞지 않은 것 같아서, 어떻게 가려서(조건을 줘서) 정보를 줘야 할 지 질문 남깁니다..!