묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 풀 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]커넥션 풀이라는게사람이랑 1:1 관계인거면 수천명이 이용하는 서비스면커넥션풀도 수천개를 준비해놔야 할까요?기본이 10개인데
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제 알고리즘 관련 질문
강사님 안녕하세요.2주차 dfs, bfs 알고리즘 문제를 풀고 있습니다.2-I(2870) 문제나, 2-J(10709) 와 같은 형태의 문제가dfs, bfs 알고리즘과 관련이 있는건지 궁금합니다.
-
미해결
[스프링] 트랜잭션 실패 시 외부 API 요청 취소
흐름은 이렇습니다.유저에게 입금이체하는 메소드에서,외부 API를 호출해서 유저에게 입금이체를 함외부 API에게 응답 메시지를 받고, DB에 입금 내역, 상품 상태 등을 저장함 그리고 이 입금이체 메소드(1)에 @Transactional 어노테이션을 붙여놨습니다. 만약 DB에 입금과 상품을 저장하다가 예외나 에러가 생긴다면 롤백이 되겠죠. 그런데... 제 쪽 DB만 롤백되는 거지 외부 API 요청은 롤백이 되는게 아니잖습니까? ㅠㅠ. 그럼 예외, 에러 발생 시 외부 API를 호출해서 입금이체 취소를 하려고 했는데 이게 또 엄청나게 복잡하더군요... 카드결제가 아니라, 입금이체라 그런지 수취인에게 허락을 받아야 입금한 돈을 다시 돌려받을 수 있다고 합니다. 그래서 대체 이 부분을 어떻게 처리해야할지 모르겠어요. 막막하네요. 어떤 해결책이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
video가 안 나타나는 문제
video 코드를 맞게 입력했지만 표출되지 않았습니다콘솔에는 아무런 에러도 없고.. url도 문제가 없어서 이유를 찾기 어려워 리액트 라이브러리로 대체했습니다.작동은 정상적으로 되지만 앞으로 수업 듣기에 문제 없을지는 모르겠습니다.같은 문제를 겪으신 분들 참고하시면 좋겠습니다.// client npm i react-player --save // VideoDetailPage.js import ReactPlayer from 'react-player/lazy'; // video 부분 아래와 같이 대체 <ReactPlayer style={{ width : '100%' }} url={`http://localhost:5000/${VideoDetail.filePath}`} playing={true} // 자동 재생 on controls={true} // 플레이어 컨트롤 노출 여부 light={false} // 플레이어 모드 pip={true} // pip 모드 설정 여부 />
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
BeEF가 없어요
칼리 리눅스 2022쓰고 있는데 BeEF가 없어서 다운했는데 저렇게 안뜨고 해서 뭘 다운하면 되고 어케 하면 되는지 좀 알려주세요 ㅜㅜㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 들으면서 영한님께 여쭤보고 싶은게 있습니다!
강의 너무 잘 듣고 있습니다.강의 들으면서 영한님께 여쭤보고 싶은게 있습니다!MVC의 내부동작이나 스프링 프레임워크의 내부 동작은 어떤 방식으로 파악하시는지 궁금합니다.스프링 프레임워크가 너무 방대하다고 생각되서 디버깅으로 파악하기도 힘들다고 생각하는데, 어떤 방식으로 세세한 내부 구조를 파악하셨는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-C 속도 차이 질문드립니다
http://boj.kr/7b6776aa9c9545e58d94059272172eb9안녕하세요 선생님.3-C에서 저는 BFS를 통해서 구현하여 해결한 후, 강의를 통해 선생님 코드와 비교하며, 여러 구현방식을 익히는 중에 궁금한 점이 생겨서 질문드립니다.강의에 나온 코드는 검색 로직이 DFS로 구현되어 있는데, 제 코드의 검색 로직은 BFS인것만 제외하면 선생님 코드와 별 차이가 없다고 생각했습니다.그런데 막상 코드를 돌려보면제 코드의 시간은 164ms~172ms가 나오는 반면, 선생님의 코드는 88ms정도로 거의 90%가까이 빠르게 나옵니다.왜 이렇게 시간차이가 많이나는지 이해가 안는데 왜 그런지 여쭙고 싶습니다.(현재 여러 시도를 해보긴 했는데 오히려 더 느리게 나오고 잘 모르겠네요...ㅠ27,40번째 line의 중복 삽입 수정 버전 442mshttp://boj.kr/7fabb13a2ca441bda6e8591670ef9621함수 제거 버전 172mshttp://boj.kr/312e0d4df77c45219e46da19cc649e05)
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
app-level의 provide한 값을 새로고침시 정상적으로 inject하지 못함.
안녕하세요. Provide/Inject 강의의 마지막 부분 app레벨 provide에 대해 질문드립니다. 우선 코드는 아래와 같습니다.main.jsimport { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); app.mount('#app'); app.provide('msg', 'msg입니다');App.vue<template> <div></div> </template> <script> import { inject } from 'vue'; export default { setup() { const msg = inject('msg'); console.log('app.vue', msg); return {}; }, }; </script> 강의 16분 10초에서 위 코드와 유사한 것을 시연해주셨습니다.강의에서는 코드 작성 후 저장해 자동 새로고침 되었고, 정상적으로 inject한 값이 콘솔에 출력됐습니다. 저도 개발서버 기능이 제공하는 저장-자동새로고침 시에는 provide-inject한 값이 콘솔에 정상 출력됩니다.그러나 브라우저의 새로고침 버튼을 눌러 페이지를 새로 불러오면 inject된 값이 undefined로 찍힙니다. (출력내용은 "app.vue undefined"입니다.)분명 컴포넌트 인스턴스가 생성되기 전에도 provide한 값을 inject로 접근할 수 있다고 설명해주셨는데 그렇지 못해서 왜 그런지 궁금했습니다. 제 개발환경을 확인해봐야 할지, 아니면 제가 겪고있는 상황이 정상적인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 연결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]h2로 웹사이트 들어가려는데 오류가 떠요 ㅠㅠ 왜이런거죠?
-
미해결게임 프로그래머 취업 전략 가이드
언리얼과 유니티 상관이 없나요?
어떤 엔진을 사용하든 배우는데 있어 상관이 없다는 말을 들었습니다. 그래서 선생님을 찾아오게 되었습니다. 하나의 엔진과 언어에 깊게 파고들어 마스터하는 것이 단점보단 장점이 많다고 생각이 듭니다. 언리얼과 C++, 유니티와 C#. 둘다 잘 다룰수 있다면 선택의 폭이 넓어지겠지만 둘중 하나만 이용하여 개발하는 경우가 많지 않나 생각듭니다. 언리얼로 개발하는 회사에서 유니티 전공자를 뽑는지는 모르겠지만 어디까지나 상대평가이기 때문에 저 같은 경우는 목표를 이루기 위해 언리얼에 전문성을 띠고 싶으며 꾸준히 선생님의 C++과 언리얼을 공부중입니다. 실력을 기르는데 있어서 두 엔진보다는 이론과 코딩실력이 중요하겠지만 유니티와 언리얼은 생각보다 많은 차이점을 가지고 있다고 판단합니다. 제 생각이 현업에서도 똑같이 작용하는지, 틀린 가치관인지 궁금합니다. 하나의 언어와 엔진을 정해 깊게 파고드는 것과 다양한 엔진을 활용하여 배우는 것에 있어서 무엇이 더 효율적일까요
-
해결됨풀스택 리액트 라이브코딩 - 간단한 쇼핑몰 만들기
server 실행 오류가 납니다.
https://github.com/JaeHyuk1217/JH_mall/tree/master/shopping-mall server을 실행하면 이러한 오류가뜹니다... 환경변수 설정도 해보고 node 재설치도 해봤는데 되지 않습니다..
-
미해결iOS AutoLayout 완벽 가이드 - 실무 프로젝트를 위한 실전강의
계산기 - 버튼들의 가로 간격과 세로 간격을 동일하게 하는 방법 질문드립니다.
안녕하세요. 강의 감사히 잘 수강하고 있습니다. 학습 중에 잘 안되는 부분이 있어 질문 남깁니다.Calc (4) 강의까지 모두 수강하고 따라한 결과 동그라미 버튼은 잘 나오는데, 버튼들 사이의 가로 간격과 세로 간격이 다르게 나옵니다.원인을 찾으려고 세 번이나 처음부터 다시 따라서 만들었는데 아무리 찾아도 원인을 모르겠습니다.. 혹시 해결 방법을 알려주실 수 있을까요?🙏전체 소스 코드는 https://github.com/bibi6666667/AutoLayoutCalculatorPractice 여기에 있습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
무언가 오류가 있다고 뜨는데 어떻게 고치나요?
import requests from bs4 import BeautifulSoup # 종목 코드 리스트 codes = [ '035420', '088980', '005930', '035720' ] for code in codes: url = f"https://finance.naver.com/item/sise.naver?code={code}" response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') price = soup.select_one("#_nowVal").text price = price.replace(',', '') print(price)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
PKIX path building failed
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Spring Initilizr 을 통해 project generating 한 후 Intellij 에서 실행하니 초기 빌드 과정에서 아래와 같이 에러가 뜨는데요, 찾아보니 제가 지금 사내 pc 및 네트워크를 사용 중이어서 뜨는 인증서 오류인 것 같습니다. 혹시 관련하여 해결책을 주실 수 있으실까요?PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html 사이트 연결할 수 없음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.webapp 아래 index.html 파일 잘 위치해 있습니다.http://localhost:8080/index.html 주소로 들어가면 사이트 연결할 수 없음이라고 뜨고IDE에서 run하면 뜨는 브라우저 아이콘 4개 중 크롬을 누르게 되면 http://localhost:63342/servlet/servlet.main/webapp/index.html?_ijt=gol0djjmpsd9cm9s9v6ag90urr&_ij_reload=RELOAD_ON_SAVE위 주소로 index.html 파일이 잘 열립니다.혹시 어떤 문제 때문에 이러는 건가요?이와 연관된 문제인 건지는 모르겠으나 위에 긴 주소로 열린 index.html 파일에서 jsp 회원가입, 회원목록을 눌렀을 때도 404에러만 납니다.알려주신 위치에 디렉토리 생성하고 파일 제대로 만들었음에두요.
-
미해결프로젝트로 배우는 React.js
prePosts는 어디서 받아 오는 건가요?
const deleteBlog = (event, id) => { event.stopPropagation(); console.log("delete"); axios.delete(`http://localhost:3001/posts/${id}`).then(() => { setPosts((prevPosts) => { console.log(prevPosts); return prevPosts.filter((post) => { return post.id !== id; }); }); }); }; prevPosts는 delete후에 api에서 넘겨 주는 것인가요? 아니면 기존 posts값인가요>
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DI 적용해보기
안녕하세요. 항상 좋은 강의 감사합니다.FrontController에서 어댑터들을 DI로 적용할 수 있다고 하셔서 이를 구현해보고자 하였습니다.@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { ... @Autowired private Map<String, Object> handlerMappingMap; ... }처음에 컬렉션 객체들을 Bean으로 등록하여 주입받고자 HandlerMappingConfig클래스를 만들었습니다.@Configuration public class HandlerMappingConfig { @Bean public Map<String, Object> handlerMappingMap() { Map<String, Object> handlerMappingMap = new HashMap<>(); // V2 Controller handlerMappingMap.put("/front-controller/v5/v2/members/new-form", new MemberFormControllerV2()); handlerMappingMap.put("/front-controller/v5/v2/members/save", new MemberSaveControllerV2()); handlerMappingMap.put("/front-controller/v5/v2/members", new MemberListControllerV2()); // V3 Controller & V4 Controller ... return handlerMappingMap; } }그리고 제대로 주입을 받았는지 테스트하기 위해 FrontControllerServletV5 클래스의 service() 메소드에서 handlerMappingMap을 출력하도록 작성하였습니다.@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { ... @Autowired private Map<String, Object> handlerMappingMap; ... @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 정상적으로 주입되었는지 테스트하기 위해 출력 System.out.println("handlerMappingMap = " + handlerMappingMap); ... } }서버를 실행시켜 확인해보니 아래 그림과 같이 handlerMappingMap에 마치 컨테이너의 빈들이 다 들어온 것처럼 출력된 것을 확인할 수 있었습니다.왜 이런 현상이 나타나는지 모르겠습니다. 혹시 타입이 Map<String, Object>라 그런걸까요?감사합니다.
-
미해결3분만에 1000명 DB 확보하는 DB 추출기 프로그램 개발 강의 (셀레니움 + pyqt + gui + exe 프로그램)
이오류는 어떤건가요?
[6512:12744:0216/164613.471:ERROR:device_event_log_impl.cc(218)] [16:46:13.471] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. (0x1F) 뭐 크롬드라이버 버전 때문이라는데 그래서import time from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) import pyperclip자동 업데이트로 변경하였는데도 오류뜨네요
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터의 호출 순서 질문입니다.
강의를 따라가다 문득 preHandle, postHandle, afterCompletion 의 순서를 알고 싶어서 LoginCheckInterceptor 에 해당 메서드를 추가하여 로그를 찍어보았습니다.질문은 맨 밑에 있으며, 코드는 이해를 돕기 위해 첨부했습니다.LogInterceptor@Slf4j public class LogInterceptor implements HandlerInterceptor { public static final String LOG_ID = "logId"; @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception { String requestURI = request.getRequestURI(); String uuid = UUID.randomUUID().toString(); request.setAttribute(LOG_ID, uuid); // @RequestMapping: HandlerMethod // 정적 리소스: ResourceHttpRequestMethod if (handler instanceof HandlerMethod) { // 호출할 컨트롤러 메서드의 모든 정보가 포함되어 있다. HandlerMethod hm = (HandlerMethod) handler; } log.info("[{}][{}] LogInterceptor preHandle", requestURI, uuid); return true; } @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LOG_ID); log.info("[{}][{}] LogInterceptor postHandle", requestURI, uuid); } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LOG_ID); log.info("[{}][{}] LogInterceptor afterComplete", requestURI, uuid); if (ex != null) { log.error("LogInterceptor afterComplete Error: ", ex); ex.printStackTrace(); } } }LoginCheckInterceptor@Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor preHandle", requestURI, uuid); HttpSession session = request.getSession(); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청 {}", requestURI); response.sendRedirect("/login?redirectURL=" + requestURI); return false; } return true; } @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor postHandle", requestURI, uuid); } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor afterCompletion", requestURI, uuid); } }InterceptorConfig@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()) .order(1) .addPathPatterns("/**") // 모두 허용 .excludePathPatterns("/css/**", "/*.ico", "/error"); // BlackList registry.addInterceptor(new LoginCheckInterceptor()) .order(2) .addPathPatterns("/**") .excludePathPatterns( "/", "/members/css", "/login", "/logout", "/css/**", "*.ico", "/error" ); } }결과 1 - 미인증 사용자 요청// /items 요청 [/items][45e50a37-57a0-4298-b50e-e42141005426] LogInterceptor preHandle [/items][45e50a37-57a0-4298-b50e-e42141005426] LoginCheckInterceptor preHandle 미인증 사용자 요청 /items [/items][45e50a37-57a0-4298-b50e-e42141005426] LogInterceptor afterComplete // Redirect - /login [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor preHandle [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor postHandle [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor afterComplete로그상으로 LoginCheckInterceptor의 afterComplete가 누락되었습니다.결과2 - 정상 처리// /login 요청 [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor preHandle LoginService: 'test', 'test!' login? Member(id=1, loginId=test, name=테스터, password=test!) [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor postHandle [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor afterComplete // Redirect - /items [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor preHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor preHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor postHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor postHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor afterCompletion [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor afterCompletepreHandle은 order의 순위대로 로그가 찍히는데, postHandle과 afterCompletion의 경우 order의 순위와 반대로 호출이 됩니다. 혹시 위 2개의 결과에 대한 이유를 설명해주실 수 있을까요..? 그냥 로직때문에 그런 것인지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]엔티티 클래스 개발 1 강의에서 1:10분 쯤 Member, MemberRepository를 삭제 후 회원 레포지토리 개발 강의에서 MemberRepository를 새로 개발하셨습니다.이때 MemberRepositoryTest에는 그 전에 작성한 MemberRepository 기준으로 되어 있어 리턴 값이나 필드 값이 (UserName > name) 맞지 않아 오류가 발생하고 있습니다.그런데, 강사님은 MemberRepository를 새로 작성할 때 오류가 뜨지 않고 관련해서 언급을 하신 것이 없는 것(돌려봤는데 찾지 못한 것일 수도 있습니다.)으로 간주되는데 MemberRepositoryTest를 어떻게 처리하신 것인지 궁금합니다.