묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
[스프링 부트 테스트 질문] 스프링 어플리케이션 컴포넌트에 대한 테스트 방법 ( mock 을 안쓰는게 맞나요? )
질문 상황 1) 스프링 어플리케이션에 대한 테스트를 진행할 때, @SpringBootTest 를 적용함 2) 이 경우 테스트 코드 실행 시, 스프링 실행 환경에 필요한 객체들을 생성 3) 스프링 컴포넌트로 선언할 경우 객체 생성에 필요한 코드가 준비되어 있지 않은 경우, 스프링 부트가 실행되는 과정에서 에러가 발생-> 강의의 예시에선 StudyService 에 @Service 어노테이션을 붙이는 경우, private final MemberService memberService 를 불러오는 과정에서 에러가 발생.( Error creating bean with name 'studyService' defined in file ..... No qualifying bean of type 'app.member.MemberService' available) ------------------------------------------------------------------------------------------ 질문 : 스프링 부트 컴포넌트에 대한 mockito 사용방법 구체적인 질문 1) 위의 상황을 제가 잘 이해한게 맞나요 ? 2) 스프링 컴포넌트에 대한 테스트 방법을 대략적으로 알려주세요 ex 1) 일반적으로 객체 생성에 필요한 모든 클래스의 구현부가 나오기 전까지 테스트 하지 않는다. 따라서 mockito 사용에 대해 고민할 필요가 없다.ex 2) @Component , @service 어노테이션떼고 하고 싶은 테스트만 먼저 진행 하라3) 선생님 강의 중에 스프링 어플리케이션에 대한 전반적인 작업 과정을 관찰하고 싶으면 "백기선 - 스프링 기반 rest api 개발" 을 보면 될까요 ? 제가 아직 테스트 강의를 끝까지 안봐서 놓치고 있는 설명이 있을수도 있습니다. 유튜브 잘 보고 있어요. 구독잡니다수고하세요 :)
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
데이터 베이스 생성 후 postman의 get products에서 send를 누른 뒤 오류
안녕하세요 그랩님! 강의 잘 듣고 있습니다. postman에서 create product에서 제품 정보들을 입력하고, DB Browser for SQLite에 데이터가 아래와 같이 입력된 것을 확인했습니다. 이후 포스트맨에서 get products로 들어가 send를 누르니 아래와 같이 '모든 필드를 입력해주세요' 라는 문구가 뜹니다. vscode에서 name, description,price,seller 이 네가지가 notNull로 설정되어 있어서 이 네가지 값이 잘 입력되지 않았을 때 해당 에러 문구가 뜨는 것일 텐데 소스 코드를 보면서 다른 점을 찾아봐도 딱히 다른점을 모르겠습니다... (제 눈의 문제인지...ㅠㅠ) 아래는 제가 작성한 코드입니다. <product.js> <server.js> vscode 터미널에 뜨는 에러 코드는 아래와 같습니다. 에러 코드에도 보면 첫줄에 'notNull Violation'이라고 되어 있어서 해당 조건을 어겼기 때문인 것 같은데... 데이터 베이스에 값들이 잘 들어가 있는 거 같은데 뭐가 잘못된 걸까요... 한 번 봐주시고 혹시 제가 놓친 부분이 있거나 좋은 방법이 있다면 답변해주시면 감사하겠습니다..!! ValidationError [SequelizeValidationError]: notNull Violation: Product.name cannot be null,notNull Violation: Product.price cannot be null,notNull Violation: Product.seller cannot be null,notNull Violation: Product.description cannot be null at InstanceValidator._validate (/Users/jade/Desktop/grab-market-server/node_modules/sequelize/lib/instance-validator.js:50:13) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async InstanceValidator._validateAndRunHooks (/Users/jade/Desktop/grab-market-server/node_modules/sequelize/lib/instance-validator.js:60:7) at async InstanceValidator.validate (/Users/jade/Desktop/grab-market-server/node_modules/sequelize/lib/instance-validator.js:54:12) at async model.save (/Users/jade/Desktop/grab-market-server/node_modules/sequelize/lib/model.js:2368:7) at async Function.create (/Users/jade/Desktop/grab-market-server/node_modules/sequelize/lib/model.js:1344:12) { errors: [ ValidationErrorItem { message: 'Product.name cannot be null', type: 'notNull Violation', path: 'name', value: null, origin: 'CORE', instance: [Product], validatorKey: 'is_null', validatorName: null, validatorArgs: [] }, ValidationErrorItem { message: 'Product.price cannot be null', type: 'notNull Violation', path: 'price', value: null, origin: 'CORE', instance: [Product], validatorKey: 'is_null', validatorName: null, validatorArgs: [] }, ValidationErrorItem { message: 'Product.seller cannot be null', type: 'notNull Violation', path: 'seller', value: null, origin: 'CORE', instance: [Product], validatorKey: 'is_null', validatorName: null, validatorArgs: [] }, ValidationErrorItem { message: 'Product.description cannot be null', type: 'notNull Violation', path: 'description', value: null, origin: 'CORE', instance: [Product], validatorKey: 'is_null', validatorName: null, validatorArgs: [] } ]}node:internal/errors:465 ErrorCaptureStackTrace(err); ^ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at new NodeError (node:internal/errors:372:5) at ServerResponse.setHeader (node:_http_outgoing:576:11) at ServerResponse.header (/Users/jade/Desktop/grab-market-server/node_modules/express/lib/response.js:794:10) at ServerResponse.send (/Users/jade/Desktop/grab-market-server/node_modules/express/lib/response.js:174:12) at /Users/jade/Desktop/grab-market-server/server.js:44:11 at processTicksAndRejections (node:internal/process/task_queues:96:5) { code: 'ERR_HTTP_HEADERS_SENT'}
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
하이버네이트에서 지연 로딩된 객체의 필드가 null인 현상에 대해 질문드립니다
안녕하세요 좋은 강의 감사드립니다. 하이버네이트에서 지연 로딩 사용 시, 지연 로딩된 객체가 초기화 되었음에도 불구하고 필드 접근 시 null이 조회되는 현상에 대해서 질문드립니다. 간단하게 현상을 재현하면 다음과 같습니다. 위와 같이 Member가 Team을 지연 로딩으로 설정한 경우이며, 예시를 위해 Team의 name을 public으로 설정하였습니다. 그리고 다음 코드를 실행하면 발생하는 결과는 다음과 같습니다. 이와같은 오류의 원인을 찾아본 결과 stackoverflow에서 지연 로딩으로 설정된 Proxy 객체의 필드는 모두 null로 세팅한다고 얘기해주었습니다. 그러나 관련된 공식 자료를 찾아볼 수가 없어 정확한 작동 원리에 대해 알고 싶어 질문드립니다. 또한 비슷한 현상으로 스프링에서 Proxy 타입으로 생성된 Bean에 대해서는 내부 필드들을 null로 할당하는 것이 있습니다. 이는 공식 문서에 따르면 Spring AOP에서 메서드 실행 조인 포인트만 제공하며, 필드 가로채기에 대해서는 지원하지 않는다고 나와있었습니다. 혹시 지연 로딩된 프록시 객체의 필드가 null로 세팅되는 현상이 위와 관련있는 현상인지에 대해서도 궁금합니다. 관련된 스프링 공식문서는 다음과 같습니다. https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/aop.html 또한 지연 로딩과 null 세팅에 관한 스택 오버플로우 링크는 다음과 같습니다. https://stackoverflow.com/questions/8945365/jpa-hibernate-proxy-not-fetching-real-object-data-sets-all-properties-to-null 너무 긴 질문 죄송합니다. 항상 감사합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
뜬금없는 질문 하나 드립니다
맛비님 문득 갑자기 궁금한게 하나 있습니다 Module 정의 시 "#" 이 붙은게 있고 안붙은게 있는데 차이가 무엇인가요??
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
Core 개수 늘리는 법
안녕하세요 맛비님 실습관련해서 몇 가지 질문을 드립니다! Core 개수를 늘려보고 싶은데 고민 중인 것이 있습니다. Memory I/F는 32bit의 data를 읽어오는데 만약 64bit의 data를 읽어서 4개의 연산을 하고 싶다면 어떻게 해야 할까요? I/F에서 core에 data를 전달해 주기 전에 F/F을 더 추가하고 예를 들면 cnt를 사용해서 clk을 2번을 cnt하면 반전되는 새로운 clk을 만들어서 마지막 F/F을 이 clk에 동기화 시켜 Core에 data를 넣어줘야 할까요? 2. 위의 경우 결과를 BRAM에 다시 write하려면 delay를 넣어줘야 할 것 같은데 이렇게 설계하는 것이 맞는 방식인 건가요? 3. 맛비님은 더 많은 bit를 연산할 때 어떻게 하시나요? (64bit 뿐만 아니라 96bit ... 등)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
서버 구조 싱글쓰레드 인가요?
안녕하세요. 아직 강의는 다 보지 못하고 소스코드만 봤는데 서버 구조 싱글쓰레드 인가요?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
delivery 함수와 main 함수
수업 중 예시로 들어주신 코드에서 delivery 함수는 내부의 코드 순서가 보장되니 동기적으로 실행되는 것이고 main 함수에서는 delivery() 코드의 순서들이 보장되지 않아도 되니 main 함수는 비동기로 실행된다고 이해하면 될까요?
-
해결됨Flutter 앱 개발 기초
문법 관련
안녕하세요 이렇게 문법을 한번에 정리해서 빠르게 갔는데 조금더 자세하기 공부를해야하는걸까요? 나중에가서 못하거나 부족하면 그때그때 찾아서 해야하는건가요?
-
미해결반응형 웹사이트 포트폴리오(App Official Landing Website)
왜 전 선생님과 화면이 다를까요?
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>StartUp</title> <!-- Favicon Logo --> <link rel="icon" href="image/logo-favicon.png"> <!-- --> <!-- jQuery CDN --> <script src="/script/jquery-3.4.1.min.js"></script> <!-- --> <!-- Slick Slider --> <link rel="stylesheet" href="script/slick-theme.css"> <link rel="stylesheet" href="script/slick.css"> <script src="/script/slick.min.js"></script> <!-- --> <!-- LINK CSS & SCRIPT --> <link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/respon.css"> <script src="/script/main.js"></script> <!-- --> <!-- Fontawesome lINK --> <script src="https://kit.fontawesome.com/8e2986d4b4.js" crossorigin="anonymous"></script> <!-- --> </head> <body> <div class="container"> <!-- Header --> <header> <div class="header-inner"> <div class="logo"> <a href="#none"><img src="/image/logo.png" alt=""></a> </div> <div class="gnb"> <a href="#none">CEO 인사말</a> <a href="#none">서비스 특징</a> <a href="#none">자주 묻는 질문들</a> <a href="#none">경영비젼</a> <a href="#none">사용자 리뷰</a> <a href="#none">앱 사용자 가이드</a> <a href="#none">최신소식</a> </div> </div> </header> <!-- welcome --> <section class="welcome"> <div class="slideshow"> <img src="/image/slide-welcome-01.png" alt=""> <img src="/image/slide-welcome-02.png" alt=""> <img src="/image/slide-welcome-03.png" alt=""> </div> <div class="wecome-heading"> <span>창의적인 아이디어를 만드는 가장 빠른 방법</span> <h1>An idea solution of startup for your<em>3가지 타이핑 텍스트 자리</em></h1> <p> 스타트업 메이트 앱이 여러분의 최상의 스타트업 구축을 위해 창의적인 아이디어를 제공하는 데 최선을 다하겠습니다. </p> <div class="welcome-btns"> <a href="#none" class="btn start">CEO 시작하기</a> <a href="#none" class="btn guide">사용자 가이드</a> </div> </div> <div class="mouse"> <span class="wheel"></span> </div> </section> <!-- ceo-access --> <section class="ceo-access"></section> <!-- banner --> <section class="banner"></section> <!-- feature --> <section class="feature"></section> <!-- vision --> <section class="vision"></section> <!-- faq --> <section class="faq"></section> <!-- review --> <section class="review"></section> <!-- focus --> <section class="focus"></section> <!-- guide --> <section class="guide"></section> <!-- news --> <section class="news"></section> <!-- footer --> <footer></footer> </div> </body> </html> /* Font */ @import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;1,400&display=swap'); /* font-family: 'Source Sans Pro', sans-serif; */ @import url('https://fonts.googleapis.com/css2?family=Gothic+A1:wght@100;200;300;400;500;600&display=swap'); /* font-family: 'Gothic A1', sans-serif; */ /* */ /* Setting CSS */ /* 박스사이징 고정 */ *{ box-sizing: border-box; } /* A태그 색상 및 데코 none */ a{ text-decoration: none; color:#222; } /* 버튼,인풋에 기본적으로 들어가있는 아웃라인 제거 */ button, input{ outline:none; } /* h태그들 제거, 마진 탑만 0, 라인하이트 설정 */ h1,h2,h3,h4,h5,h6{ margin-top: 0; font-weight: normal; line-height: 1.5em; } /* Default CSS */ /* 바디에 글꼴설정, a태그와 같은 글씨색상 */ body{ font-family: 'Gothic A1', sans-serif; font-size: 18px; line-height: 1.7em; margin: 0; background-color: white; color:#222; } /* Header */ header{ } .header-inner{ width: 1300px; margin: auto; overflow: hidden; padding-top:30px; padding-bottom:15px; } .logo{ float: left; } .logo img{ margin-top:-5px; } .gnb{ float: right; } .gnb a{ margin:10px; font-size:16px; } /* Welome */ .welcome{ height: 90vh; position: relative; } .welcome-heading{ position: absolute; top: 50%; transform:translateY(-50%); left:200px; border:5px solid red; width: 750px; text-align: center; } /* ceo-acess */ /* banner */ /* feature */ /* vision */ /* faq */ /* review */ /* focus */ /* guide */ /* news */ /* footer */ 안녕하세요, 선생님보고 코드따라썼는데 자꾸 welcome-heading부분이 위로 안올라오고 아래로 자꾸 떨어지는데.. 왜그럴까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
price를 Integer로 하신 이유가 납득이 안 됩니다
안녕하세요. Item 쪽에서 price를 Integer로 하신 이유가 가격에 null이 들어갈 수 없어서 하셨다고 했는데, 가격에 null이 들어가야하는 케이스가 뭐가 있나요? 상품을 선택해야만 가격이 책정되는 것이고 디폴트는 0일텐데 굳이 Integer로 설정하신 이유가 이해가 잘 되지 않습니다. 감사합니다.
-
미해결로그프레소 엔터프라이즈 - 대시보드
리스트 선택 컨트롤 질문
안녕하세요! 리스트 선택 컨트롤을 사용하는데 궁금한 점이 생겨서 질문드립니다. log - {IP:1.1.1.1, is_vpn:false, is_mobile: true) - {IP:1.1.1.2, is_vpn:ture, is_mobile: false) - {IP:1.1.1.3, is_vpn:ture, is_mobile: false) 위와 같은 형태의 로그가 있을 떄 대시보드에서 리스트 선택 컨트롤을 통해 is_mobile이 true인 IP들만 뽑고 싶은데 가능할까요..? 즉 각 칼럼이 true인 얘들만 따로 검색 할 수 있게 하고 싶어서요 ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Java 버전을 11로 하는 이유
안녕하세요. 자바 버전을 8로 했다가 application.yml 쪽에 jpa property 가 잘 동작이 안 되는 걸 확인해서 11로 다시 바꾼 기억이 있는데, 혹시 11 버전으로 쓰시는 이유가 jpa 쪽과 관련이 있는건가요? 강의 시작하실 때에도 11로 선택하라고 명시해주셔서 궁금하여 여쭤봅니다.
-
해결됨Flutter 앱 개발 기초
4주차 링크오류
4주차 숫자 퀴즈 앱 만들기 하단의 강의자료 링크가, 다른강의 4주차 링크랑 달라서, 누를시 자꾸 로그인하라고만 나옵니다. 우선은 기존 4주차 링크로 사용해서보고있습니다. 확인부탁드립니다 :)
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ResponseStatus
BadRequestException 만들어서@GetMapping("/api/response-status-ex1")public String responseStatusEx1(){ throw new BadRequestException();}직접 exception 내구postman 에서 header accept를 */*로 해도json 형태의 데이터가 전달되는 이유가 궁금해요.해당 매핑 핸들러가 RestController로 지정된 컨트롤러 내부에 있어서 그렇게 처리되는 건가요?? 직접 HandlerExceptionResolver를 상속하여 만든Resolver 내부에는response.setContentType("application/json");코드가 있어서 이해가 되지만 스프링이 제공하는 ExceptionResolver가 application/json을 우선순위(?)로 하여금반환하는 원리가 궁금해요
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
express server cookie관련 질문 드립니다.!
indexRouter.get('/', (req: Request, res: Response, next: NextFunction) => { console.log(req.cookies); const {name, pwd} = req.cookies; if (!name || !pwd) { res.sendFile(path.join(__viewPath, 'index.html')); } else { res.send(`${name}님 환영합니다!`); }});indexRouter.get('/login', (req: Request, res: Response) => { const {name, pwd} = req.query; const expire = new Date(); expire.setSeconds(30); const cookieOptions = { httpOnly: true, expires: expire, path: '/', }; res.cookie('name', name, cookieOptions) .cookie('pwd', pwd, cookieOptions) .redirect('/');});기존 쿠키서버를 express서버로 적용해보는 과정인데요, /login에서 받은 정보를 쿠키에 담고, redirect로 홈을 호출하고 있는데요,문제는 홈에서 보시면 req.cookies에 쿠키가 담겨있을때가 있고, 없을때가 있습니다."(console.log에서 쿠키값이 없을때: "[Object: null prototype]{}" 쿠키값이 존재할때: "{test:"test"}") 혹시 쿠키가 클라이언트에게 전송되기전에 redirect가 먼저 발생하여 쿠키값이 없어, index.html을 내보내는걸까요?6번 정도 시도한다고 가정할때 두번정도 쿠키값이 정상으로 전송되고, 나머지 4번 정도가 쿠키값이 없는 상태로 index가 호출됩니다;(정상결과와 아닌것은 순서가 없습니다;; 운이 좋으면되고 안좋으면 안되는 느낌입니다...)혹시 비동기 작업이랑 관련이 있을까여?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
DirectX 리뉴얼 강의만 들어도 괜찮을까요?
현재 C++과 언리얼로 만드는 MMORPG시리즈 part2 DirectX12를 수강중에 있습니다. 강의를 따라가는 것이 벅찬 감이 있는 와중에, 강의가 리뉴얼되고 있는 것을 알게 되었습니다. 강사님께서 리뉴얼하게된 배경도 알게 되었구요. 그렇다면 일단 DirectX 리뉴얼강의 부분만 듣고 part3으로 넘어가도 괜찮을까요?
-
미해결홍정모의 따라하며 배우는 C++
구조체 선언후 초기화 질문하고싶습니다.
#include <iostream> using namespace std; struct Person{ string name; int age; double height; float weight; }; int main() { Person me; me = {"Saram", 22, 1.79, 65.2f}; //me.age(26)오류 발생 me.age(26); me.age = 26; //OK return 0; } 구조체타입 변수를 선언후에, direct initialization으로 맴버변수 초기화를하고 실행하면 오류가 발생하더라구요. 반면에 me.age = 26 이처럼 대입연산자를 사용하게될경우 문제없이 맴버변수를 초기화할수있었습니다. 저의 질문은 구조체 맴버변수를 초기화할때 direct initialization 방법을 사용하면 안되는것인가요?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
합성된 이후, 원하는 신호에 대해 ILA처럼 Probe를 하는 방법
안녕하세요. 강의 너무 재미있고 도움되게 듣고 있습니다. 13강 bram과 관련된 부분에 대해 복습중입니다. 한가지만 짧게 여쭙고 싶습니다. (혹시 답변이 가능하지 않은 범위라면, 괜찮습니다.) BRAM에 들어가는 Addr을 관찰하고 싶어서 HW코드 및 Vivado Schematic을 분석해서, ADDRARDADDR이 그 Signal임은 발견하였는데 해당 Primitive Cell의 Signal에 [1]Waveform을 보거나 [2]Printf 로그를 찍을 수 있는 방법이 있을까요? (axi_wdata와 같은 신호에 ila를 더 붙혀보는 방법은 실패하였고, c를 통한 접근도 실패하였습니다.) 복습의 범위를 넘어 연구의 범위로 넘어가고 있어서, 키워드 정도만 도와주실 수 있다면 스스로 더 연구해보겠습니다. ㅠㅠ!! 제가 궁금한 것은, 0c주소로 보낸 데이터가, 결국 bram(RAMB36E1)의 어떤 address에서 저장되는가? 입니다. 계속 반복해서 0c주소로 데이터를 보내고 있는데, 그게 카운터(mem_addr_cnt) 등을 통해서 어떤 주소로 어떻게 Control 되는지가 이해되지 않아서 보고 싶어서 그렇습니다. [+0c주소가 data register라고 register map에 있는 부분에 대해서는 인지하고 있습니다만, 그 다음의 경로가 추적이 되지 않아서 그렇습니다.] #define XPAR_LAB01_0_BASEADDR 0x40000000 #define XPAR_LAB01_0_HIGHADDR 0x40000FFF
-
미해결자바스크립트 : 기초부터 실전까지 올인원
for loop 강의 관련 질문있습니다
이중 for loop 으로 구구단 만들기 강의할때 저는 그냥 console.log ( i '*' j '=' i*j) 썼는데 쌤은 이렇게 하셨더라구요 저 중간중간에 형관펜 칠한 저 + 를 왜 넣어야하는건가요?
-
미해결따라하면서 배우는 고박사의 유니티 기초
알려주실 수 있을까요?
'게임 오브젝트, 컴포넌트' 강의 17:54쯤에서 assets에 있는 것들을 못찾겠습니다. 에셋 스토어에 있는건가요? 검색해봤는데 안나와서...