묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
can not resolve symbol getmapping
임포트가 잘 안되어서 검색후 해결방법을 찾아서 해봤는데 해결이 안됩니다. 시도해본 방법 : https://hyesun03.github.io/2019/08/27/intellij-cannot-resolve-symbol-error/ https://ottl-seo.tistory.com/entry/IntelliJ-Cannot-resolve-symbol-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0 왜인지모르겠는데 프로젝트 삭제하고 다시 만드니까 됩니다.......................?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Whitelabel Error Page
웹 브라우저에에러가 났고 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Jul 28 17:42:12 KST 2021 There was an unexpected error (type=Internal Server Error, status=500). 콘솔내용은------------------------------------------------------------------------------------------- 2021-07-28 17:57:10.164 ERROR 4736 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1397) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1142) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.9.jar:5.3.9] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.50.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.9.jar:5.3.9] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.50.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na] 이런내용인데 .. 검색해봐도 해결방법을 잘 모르겠어서요 ㅠㅠ
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
torchvision transforms에서 왜 cuda를 붙였을 때 연산이 잘 안나오나요?
안녕하세요 gaussianblur 이미지 augmentation을 적용할 때, 이미지에 cuda에 붙였을 때와 안붙였을 때 수행시간 차이가 발생하는데, 이유가 있을까요? 아래 코드에서는 0.001s, 0.001s씩 걸리는데 import torch import torch.nn as nn import torch.nn.functional as F import torchvision from torchvision import transforms import time import albumentations as A import numpy as np sample_img = torch.randn((1, 3, 224, 224), dtype=torch.float32) sample_img2 = torch.randn((3, 224, 224), dtype=torch.float32).cuda() gaussian = transforms.GaussianBlur(5) since = time.time() gaussian_img = gaussian(sample_img) print(f'time: {time.time()-since:.3f}s') since = time.time() a_gaussian = A.GaussianBlur() gaussian_img2 = a_gaussian(image=sample_img2.permute(1, 2, 0).detach().cpu().numpy())['image'] print(f'time: {time.time()-since:.3f}s') 위 코드에서 sample_img에 cuda를 붙이면 오히려 시간이 0.4초로 늘어나게 되네요
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
8분 13초쯤에 질문있습니다.
1. 일단 a -> b 로 데이터를 전송할때 인터넷을 활용하고, 수많은 노드(=서버)를 거쳐서 전달되는걸로 이해했는데 맞나요? 2. 8분 13초쯤에 논리적 연결이지 물리적 연결을 보장해주지 않는다는 것을 말씀하시면서 그 사이의 서버들이 연결되어 있는지는모른다고 표현하셨는데, ack을주고 받는 과정에 3번동안 주고 받았다면 a->b 로 가는 노드들이 적어도 하나이상은 연결되어 있다는거 아닌가요? 만약 그게 아니라면 무슨 연결을 체크한 것인지 이해가 잘 가지 않습니다. 단순히 서버가 존재하는지 여부인가요? 그걸 체크했다고 하더라도 오는길, 가는길이 있을수 밖에 없다고 느껴집니다. 3. 2번이 맞다면 물리적 연결, 논리적 연결이 무엇을 말하고 계신지 잘모르겠습니다. 4. 추가적으로 tcp 없이 데이터를 전송해서 서버가 닫혀있어 전송을 못받은 경우와 ack을 3번 주고 받은 경우에 ack을 주고 받는게 속도가 더 빠른가요? 질문을 바꿔서 tcp없이 데이터를 전송하는 그 자체로 해당 서버에서 데이터를 받았는지 안받았는지 체크할수 있는것 아닌가요? 근데 굳이 연결상태를 먼저 체크하고 보내는 이유가 궁금합니다. 보안이나 ack으로 체크하면 데이터 자체로 체크하는것 보다 속도가 빠르다 정도로 예상해봤습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
지속연결과 put 메서드 질문드립니다
HTTP에서 맨 처음에 클라이언트-서버가 연결하고 있으면 서버가 계속 연결을 유지해야 하니까 자원이 많이 낭비돼서 비 연결성으로 요청 -> 응답 -> 종료 이렇게 바꿨는데 이러면 너무 오래걸리니까 지속 연결을 사용한다는데 결국 지속 연결 사용하면 맨 처음 자원이 많이 낭비 되던 시절로 돌아간 건가요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github권한주시면 감사하겠습니다
인프런 아이디 : power4895@naver.com 인프런 이메일 : power4895@naver.com깃헙 아이디 : power4895@naver.com 깃헙 Username : power4895-web
-
미해결Spring Boot JWT Tutorial
강사님에게 바라는 점
JWT TOKEN을 만들기 전에 SPRING SEUCRITY 기초 지식에 부딪혔습니다. 물론 부족한 지식은 겨우 겨우 공부해가면서 보충했습니다. UserDetailsService라든지 Filter든지 다음 강의를 만드실 때는 초급자를 위해 이론에 대해 차근차근 설명해주셔서 SPRING SECURITY에 관한 강좌좀 만들어주셨으면 하는 바램이네요. 강의 마지막 부분에 가르쳤던 spring security를 적용해서 OAuth, Session, JWT token 로그인 관련 강의를 만들어 주시면 많이 볼 것 같습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
개발자님 프로토콜이란게 뭔가요?
프로토콜. 통신규약, 즉 규칙이란거는 매번 들어서 알겠는데 그래서 프로토콜이 뭔가는 아직도 모르겠 습니다. 규칙을 적어놓은 문서를 말하는건지, 설명해주신 목적지 ip와 출발지 ip를 코드로 적어서 어딘가에 담는 것을 말하는건지, 무슨 알고리즘을 말하는건지 모르겠습니다. 마찬가지로 패킷도 데이터를 패킷으로 보낸다는 것은 알겠는데 패킷이 실제로 무엇인지는 잘 모르겠습니다. 예를들어, 리스트 같은 구조체를 코드로 만들어서 거기의 내용을 채워서 보내는걸 패킷이라고 부르는건가요? 패킷이나 아이피의 속성값이 무엇으로 이루어졌는지 가 아닌 이 자체가 무엇이고 어떻게 쓰인다는지 감이 오지 않아서 질문남깁니다. 더 나아가 인터넷이 tcp ip프로토콜로 이루어져 있다. 전혀 이해해본적이 없는 개념입니다 ㅠ
-
미해결웹 게임을 만들며 배우는 React
npx webpack 할 때 오류....
ERROR in ./client.jsx 1:12-28 Module not found: Error: Can't resolve 'react' in 'C:\Users\user\Desktop\react-project\lecture' ERROR in ./client.jsx 3:15-35 Module not found: Error: Can't resolve 'react-dom' in 'C:\Users\user\Desktop\react-project\lecture' ERROR in ./client.jsx 5:16-38 Module not found: Error: Can't resolve './WordRelay' in 'C:\Users\user\Desktop\react-project\lecture' 3 errors have detailed information that is not shown. Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. WordRelay (webpack 5.47.0) compiled with 3 errors in 760 ms- 이런게 발생하네요... https://github.com/2winyear/react-project 제 깃,,,주소입니다
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
DB에 데이터는 잘 들어가는데 ,,
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Postman을 이용해서 DB에 데이터를 넣는 작업과 에러까지 잘 작동합니다. 하지만 강의 영상처럼 Postman의 결과값에 id, updateAt, createAt은 보이지 않습니다. 다음 사진처럼 제가 입력했던 부분만 출력됩니다. 추가적으로 콘솔창에는 Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 이러한 에러가 뜹니다. 밑에 코드도 첨부하겠습니다. const express = require("express"); const cors = require("cors"); const app = express(); const models = require("./models"); const port = 8080; app.use(express.json()); app.use(cors()); app.get("/products", (req, res) => { const query = req.query; console.log("QUERY :", query); res.send({ products: [ { id: 1, name: "농구공", price: 100000, seller: "조던", imageUrl: "images/products/basketball1.jpeg", }, { id: 2, name: "축구공", price: 50000, seller: "메시", imageUrl: "images/products/soccerball1.jpg", }, { id: 3, name: "키보드", price: 10000, seller: "그랩", imageUrl: "images/products/keyboard1.jpg", }, ], }); }); app.post("/products", (req, res) => { const body = req.body; const { name, description, price, seller } = body; if (!name || !description || !price || !seller) { res.send("모든 필드를 입력해주세요."); } models.Product.create({ name, description, price, seller, }) .then((result) => { console.log("상품 생성 결과 : ", result); res.send({ result, }); }) .catch((error) => { console.error(error); res.send("상품 업로드에 문제가 발생했습니다."); }); res.send({ body, }); }); app.get("/products/:id/events/:eventId", (req, res) => { const params = req.params; const { id, eventId } = params; res.send(`id는 ${id}와 ${eventId}입니다.`); }); app.listen(port, () => { console.log("그랩의 쇼핑몰 서버가 돌아가고 있습니다."); models.sequelize .sync() .then(() => { console.log("DB 연결 성공!"); }) .catch((err) => { console.error(err); console.log("DB 연결 에러"); process.exit(); }); });
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
argument의 객체는 생성자호출를 하지 않나요?
void Knight_Copy(Knight k) {} int main(){ Knight knight; Knight_Copy(knight); } 위와 같은 코드가 있습니다. Knight_Copy에서 만들어진 k는 생성자를 호출하지 않고 소멸자만 호출하나요? 제 컴파일러는 stack에 만들어진 k의 생성자를 호출하지 않았습니다.
-
미해결스프링 핵심 원리 - 기본편
빈의 생명주기와 콜백 ) 초기화와 종료의 의미가 궁금합니다.
1) 초기화 시점이 궁금합니다. 스프링컨테이너를 생성후 빈의 의존관계 주입까지 마치고 난후 초기화가 일어나는건가요? 2) 종료의 의미도 궁금합니다. 스프링 컨테이너를 디폴트로 만들때 싱글톤인걸로 배웠고 이것은 스코프가 싱글톤이므로 스프링 컨테이너와 생명주기를 나란히 한다는걸로 알고있는데요 , 강의에서 말하는 종료라는것은 프로그램을 정지시킬때 스프링 컨테이너도 없어지므로 , 스프링 컨테이너가 없어지기전에 그 안에 있던 객체들을 소멸시켜준다는 건가요?? 싱글톤으로 만든 스프링 컨테이너안에 존재하는 객체들은 프로그램이 작동하는 동안에는 소멸되지않는건가요?? DBCP에서 DB와 클라이언트를 연결해주는 connection객체를 싱글톤으로 만들고 이 connection 객체는 프로그램이 돌아가는 동안엔 소멸되지않는게 맞나요?
-
미해결웹 게임을 만들며 배우는 React
왜 전 plugin-proposal 추가하기 전에 성공적으로 컴파일이 될까요?
전 왜 module로 고친 후에 plugin-proposal 추가하기 전에 성공적으로 컴파일이 될까요? 이후에 Hello webpack도 잘 나오네요.. 이유가 뭘까요? 이후 강좌를 위해 plugin-proposal도 추가해야될까요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
Average population of each continent 문제는 "모든 대륙의" 이므로
Average population of each continent 문제는 "모든 대륙의" 이므로 5개대륙 외에 north america null 과 antarctica null도 결과가 나와야 하지 않나요? 그러기 위해서는 inner join 이 아니라 Country 와 City 순서로 한 다음 left join이어야 할 둣 합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
질문있습니다.
그랩 마켓 서버 구축하기와 Express 프레임 워크 사용하기 수업 보면서 궁금한 점이 있습니다. 수업중 나온 화면을 비교용으로 캡쳐하였습니다. 수업을 보며 따라친 코드는 캡쳐한 화면처럼 나오지 않고 쭉 1~2줄 로 작성되어 보기가 매우 불편하게 나오더라구요; 그래서 영상 아래에 올려주신 깃헙 링크로 들어가 다르게 코드를 작성한게 있나 비교를 해봤지만 크게 다른부분을 찾을수 없었습니다. 영상에 캡쳐한거처럼 데이터가 나오게 하려면 어떻게 해놔야 하나요?..
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ResponseBody vs ResponseEntity
1. @ResponseBody와 ResponseEntity의 기능적인 부분이 동일한 것으로 알고 있는데 ResponseEntity를 사용하면 HTTP header를 좀 더 편리하게 변경할 수 있다고 이해하면 될까요? 2.어떤 상황에 어떤 것을 사용하는지 예시를 들어주실수 있나요? - 제가 생각한 예시는, HTTP 상태코드를 변경하지 않아도 되는상황에 API통신을 할 때 @ResponseBody를 사용하고 HTTP 상태 코드도 변경해야할 때는 ResponseEntity를 사용하는 것이라고 생각했습니다. (물론 @ResponseBody도 파라미터로 Response객체를 받아 헤더의 상태코드를 변경할 수 있지만 ResponseEntity는 추가 파라미터 없이 가능하니까 좀 더 유연하다?는 개념으로 이해했습니다.)
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
에러 관련 질문있습니다!
server.on("error", err => { console.error(err) }) 로 서버에 대한 에러를 잡아주고 있는데 try catch로 한번 더 에러를 잡는 이유가 궁금합니다. 그리고 try catch는 async await할때 사용하는 이유도 부탁드리겠습니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
nullPointException 에러
map 객체에 static을 안붙이면 nullpoint 예외가 나오는데 static을 붙이지 않으면 메모리를 공유하지 않기 때문인가요??
-
미해결파이썬 무료 강의 (활용편2) - GUI 프로그래밍 (4시간)
오류
PIL 오류가 납니다 이유를 모르겠는데 도와주세요~
-
미해결스프링 핵심 원리 - 기본편
테스트에 대한 질문
안녕하세요 본 강의의 핵심 내용은 아니지만 테스트 관련해서 궁금한 점이 있어 여쭤봅니다. 1. 협업 현장에서 하나의 테스트 (@Test 1개) 에 대해서 다양한 데이터로 돌아가면서 테스트를 진행하나요? 2. 만약 그렇다면 하나의 테스트에 적용할 다수의 데이터에 대해서 디자인 패턴이 있을 것 같은데 어떤 방식으로 짜는지 궁금합니다. 2번에 대해서 구글링도 해보고 고민을 해봤는데 뭔가 정석? 이 아닌것 같아 질문 드립니다. 아래는 예제 코드입니다. // test 클래스 일부 @Test void join() { //given Member member = MemberTestUtil.getMemberSample("sample1"); //when, then 생략 } // MemberTestUtil 클래스 public class MemberTestUtil { public static Member getMemberSample(String descriptor) { Member member = new Member(); // Member는 @builder 포함 switch (descriptor) { case "sample1": member.builder().id(1L).name("memberA").grade(Grade.VIP); break; case "sample2": member.builder().id(2L).name("memberB").grade(Grade.VIP); break; // 생략 } return member; } }