묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
vscode에서 환경 설정
안녕하세요. 맥 vscode에서 환경을 설정해주고 있는데 질문글에 올라온 링크를 찾아보니c/c++: edit configuration(ui)에 들어가서 설정을 해준 뒤,c_cpp_properties 파일을 만들어줘야 하는 것을 알게 되었습니다.그런데 제가 검색했을 때는 edit configuration이 뜨지 않는 상황입니다..혹시 어떻게 해야하는지 알 수 있을까요? 참고로 extension에서 c/c++과 code runner는 모두 설치하였습니다.
-
미해결카프카 완벽 가이드 - 코어편
Idempotence 관련 질문 드립니다.
안녕하세요,좋은 강의 만들어주셔서 감사합니다.Idempotence 관련해서 보다가 궁금한게 있어서 문의 드립니다.Idempotence를 사용하면 Producer에서 전송된 Broker로 전송 시 메시지 전송 순서가 유지가 된다고 하셨는데,파티션된 토픽에 대해서는 어떻게 되는지 궁금합니다.파티션 내에서만 순서가 유지되는 걸까요? 파티션이 3개로 된 토픽의 경우는 10개의 메시지가 전달 될 때 10개의 메시지가 쪼개져서 파티션별로 데이터가 들어갈텐데 그렇게 되면 전체 토픽에 대해서 순서 유지가 안되지 않을까해서 질문 드렸습니다. 감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Loss function 관련하여 질문드립니다.
강사님 안녕하세요. test loss 및 validation loss 관련하여 질문드립니다. train loss와 validation loss 플랏을 보고, 이 모델이 잘 학습이 되었는지 어떻게 판단해야 하는지가 궁금하여 질문드리게 되었습니다.강의 코드를 활용하여 학습하고자 하는 데이터에 적용해 보았습니다. 같은 데이터여도, 모델을 어떻게 구성하는지에 따라 에폭에 따른 loss 값이 큰 차이를 보였습니다. Case 1) 초기 epoch의 validation loss가 train loss보다 낮은 경우Case 2 ) validation loss와 train loss의 차이가 큰 경우Case 3) Validation loss가 감소하는 형태를 띄나, 크게 fluctuation 할 경우Case 4) Validation loss가 크게 fluctuation하며, 감소하는 형태가 아닌 경우 (증가 -> 감소)말씀드린 4가지 case 경우 모두, 최종적으로 loss 값 자체는 낮게 나왔습니다.하지만 제가 이상적이라고 생각한 loss 곡선에는 모두 벗어나는것 같아서, 위 형태들도 학습이 잘 되었다고 판단할 수 있을지 궁금하여 질문드립니다! 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의 내용 깃허브 또는 블로그 정리 관련 질문
안녕하세요.강의 들은 내용을 전반적으로 깃허브에 정리하려고 합니다.강의 캡쳐본이나 강의 예시 코드를 정리하고 작성을 하면서 이해하는 방식으로 학습하려고 하는데, 공개된 공간에 출처를 남긴 후 강의 캡쳐본이나 예시 코드를 함께 작성하여 정리해도 되는 지 여쭤봅니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: no further information: localhost" [90067-214]Caused by: java.net.ConnectException: Connection refused: no further informationjava.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null이번 강의부터 이러한 오류가 계속 뜹니다. 8080포트는 사용중이지 않고 혹시 해서 포트번호를 바꿨는데도 계속해서 오류가 뜹니다..
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다
강의자료 부탁드립니다 qkrtjdud21@naver.com
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
2강 - 입력 매핑 컨텍스트 오류가 발생했습니다.
BeginPlay 함수를 오버라이딩 하실 때 void AABCharacterPlayer::BeginPlay(){Super::BeginPlay();APlayerController* PlayerController = CastChecked<APlayerController>(GetController());if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController)){Subsystem->AddMappingContext(DefaultMappingContext, 0);// Subsystem->RemoveMappingContext(DefaultMappingContext);}}와 같이 정의하셨는데, ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController) 이 함수에서 인수가 일치하지 않는다는 오류가 발생합니다. 선생님 코드를 보면 동일한 코드임에도 실행이 잘 되던데, 저는 이 부분 때문에 빌드가 안되고 있습니다. 인수가 ULocalPlayer가 들어와야 한다고 해서, APlayerController이 아닌 ULocalPlayer로 캐스팅도 해봤는데, 런타임에서 바로 터집니다. 혹시 어느 부분이 문제일까요?모듈에는 EnhancedInput 추가했고, 로그에 해당 오류 말고 다른 오류가 발생하고 있지는 않습니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
response, request
혹시 제가 이해한게 맞을까요?@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8");@WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save") public class MemberSaveServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("MemberSaveServlet.service"); String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); // getParameter는 항상 문자로 가저욘다! Member member = new Member(username, age); memberRepository.save(member); 여기서 /servlet/members/save와 /servlet/members/news-form을 서블릿 컨테이너가 서블릿객체로 등록한다. request와 response는 서블릿내장객체로써 Servlet의 요청과 응답을 받고 보낼수있는 역할을 수행한다. 동작방법은 request로 요청을 먼저받아야하는데 서블릿컨테이너에서 request를 찾아보니 /servlet/members/save에 있었고 여기서 요청을받고나서 response를 찾아보니 /servlet/members/new-form에 response가 있어서 서로 연결할수있는것이다 동작방법이 저게맞을까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
아이패드에서 재생 불가
섹션7 "S3 개요 및 버킷 생성 실습"부터 아이패드에서 재생이 되지 않습니다.'Now encoding ... 동영상을 준비중에 있습니다.' 문구만 표시되네요.(참고로 iPadOS 17.02 버전입니다.)확인 부탁드립니다.
-
해결됨초보를 위한 도커 안내서
Permission denied
(⎈|ubun-01:default) jun@JJs-MacBook ~/wp sudo docker-compose up [+] Running 2/1 ✔ Container wp-db-1 Created 0.1s ✔ Container wp-wordpress-1 Created 0.1s Attaching to db-1, wordpress-1 db-1 | 2024-01-04 05:04:28+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.8+maria~ubu2204 started. db-1 | chown: changing ownership of '/var/lib/mysql/': Permission denied wordpress-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message wordpress-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message wordpress-1 | [Thu Jan 04 05:04:30.174688 2024] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.57 (Debian) PHP/8.2.14 configured -- resuming normal operations wordpress-1 | [Thu Jan 04 05:04:30.175341 2024] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' db-1 exited with code 0 db-1 | chown: changing ownership of '/var/lib/mysql/': Permission denied db-1 exited with code 1 db-1 | chown: changing ownership of '/var/lib/mysql/': Permission denied db-1 exited with code 1 db-1 | 2024-01-04 05:04:34+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.8+maria~ubu2204 started. db-1 | chown: changing ownership of '/var/lib/mysql/': Permission denied맥북 m2 유저 입니다.아래 처럼 파일을 설정하고 docker-compose up을 하면 위와 같이 오류가 뜨는데 해결방법이 모르겠습니다... 폴더 하나 하나 권한을 주는 거 같지는 않고,,, 도와주세요 *추가로 docker ps 나 docker --version 과 같은 명령어는 모두 정상 작동합니다version: "2" services: db: image: mariadb:10.9 volumes: - ./mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - ./wp:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress
-
미해결김영한의 실전 자바 - 기본편
static ProductOrder createOrder
질문이 있습니다. static ProductOrder createOrder(String productName, int price, int quantity) 여기 부분이 잘 이해가 안가는데, 굳이 이렇게 ProductOrder 클래스명을 적고 createOrder를 적어서 static ProductOrder createOrder 라는 ProductOrderMain2 클래스 안에 코드를 쓰신 이유가 궁금합니다. ProductOrder 클래스안에 메소드를 만들어서 처리 가능한걸까요? package ref.ex; public class ProductOrderMain2 { public static void main(String[] args) { ProductOrder[] orders = new ProductOrder[3]; orders[0] = createOrder("두부", 2000, 2); orders[1] = createOrder("김치", 5000, 1); orders[2] = createOrder("콜라", 1500, 2); printOrders(orders); int totalAmount = getTotalAmount(orders); System.out.println("총 결제 금액: " + totalAmount); } static ProductOrder createOrder(String productName, int price, int quantity) { ProductOrder order = new ProductOrder(); order.productName = productName; order.price = price; order.quantity = quantity; return order; } static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } } static int getTotalAmount(ProductOrder[] orders) { int totalAmount = 0; for (ProductOrder order : orders) { totalAmount += order.price * order.quantity; } return totalAmount; } }
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
포트포워딩 및 nfs 관련
안녕하십니까 강사님nfs 볼륨을 연결하는 실습중 잘 작동하지 않아 의문이 들어 질문드립니다.저는 현재 gcp 환경에서 실리움 및 containerd 환경에서 실습중인데 워커 노드에서 성공적으로 nfs 서버를 만든다음 마스터 노드에서 nfs yaml 파일을 만들어 포드를 생성했습니다. 여기서 포드는 성공적으로 생성되나 kubectl port-forward nfs-httpd 8888:8080 후wget -O - http://127.0.0.1:8888명령으로 확인해보면 E0104 04:41:42.760571 136525 portforward.go:409] an error occurred forwarding 8888 -> 8080: error forwarding port 8080 to pod 51c205bfd168fbe728ebd76816fec7efbce3381c6d3df46fb6637642e100741a, uid : failed to execute portforward in network namespace "/var/run/netns/cni-59c489b6-f657-8c67-0da9-8cb1e0c7fbe2": failed to connect to localhost:8080 inside namespace "51c205bfd168fbe728ebd76816fec7efbce3381c6d3df46fb6637642e100741a", IPv4: dial tcp4 127.0.0.1:8080: connect: connection refused IPv6 dial tcp6: address localhost: no suitable address found error: lost connection to pod 해당 에러가 발생합니다. 처음 nfs 서버를 만들때 gcp 에서 할당받은 내부 ip 를 사용해서 마운트를 하였는데 혹시IPv4 address for cilium_host: 10.0.1.229IPv4 address for ens4: 10.138.0.2밑에 ip 가 아닌 위의 ip 로 마운트를 해야하나요..?
-
미해결JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
Promise 객체 강의 7분 27초 부분 질문입니다.
const p = add(1,2);console.log(p); //Promise { <pending> }const t = p.then(....).catch(....).finally(...)이 때 총 4개의 각각 다른 프라미스가 생성된 상태라고 이해했습니다.1) p - 프라미스 P1 (add 에서 리턴한 프라미스)2) p.then - 프라미스 P2 (P1.then 에서 리턴한 프라미스)3) p.then().catch() - 프라미스 P3 (P2.catch 에서 리턴한 프라미스)4) p.then().catch.().finally() - 프라미스 P4 (P3.finally 에서 리턴한 프라미스)결과는 아래처럼 되는거라고 생각했구요.P1가 리졸브(3) 이므로 then 실행했고 3 출력, 리턴이 없으므로 리졸브-언디파인드P2는 fulfilled(리졸브-언디파인드) 이므로 catch 실행했고 에러가 아니므로 리졸브-언디파인드P3는 fulfilled(리졸브-언디파인드) / rejected 이므로 finally 실행했고 'finally' 출력, 리턴이 없으므로 리졸브-언디파인드P4는 함수반환과 관계없이 P3와 동일한 상태임. fulfilled(리졸브-언디파인드) 인데 등록된 콜백이 없으므로 이대로 끝.그런데 강의에서 설명하실 때는 P1 프라미스에then, catch, finally 함수로 콜백을 등록한 것처럼 느껴져서요.제가 이해한 내용이 맞는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC1편 섹션3 질문
서블릿 객체랑 서블릿 내장객체는 다르다는걸 알고있습니다. 서블릿 객체는 싱글톤으로 관리되며 서블릿 내장객체는 reponse, request가 요청이 있을때마다 새롭게 생성되며 독립적으로 관리되어야한다는것까지 이해했습니다. @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8");위에 있는 코드는 response이고 아래코드는 request입니다@WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save") public class MemberSaveServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("MemberSaveServlet.service"); String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); // getParameter는 항상 문자로 가저욘다! Member member = new Member(username, age); memberRepository.save(member); 여기서 질문인게 서블릿내장객체인 request와 response가 요청이있을때마다 새롭게 객체를 만드는데 서블릿객체는 단 하나의 인스턴스를 만들어서 재사용한다고 알고있습니다. 위에코드에도 @WebServlet가 있고 아래에도 @WebServlet가 있는데 request와 response를 윕에서 받기위한 url이라고 생각이듭니다만, 어떻게 request에서 넘겨주면 response에서 응답을 줄수있는거죠? 서블릿은 싱글톤이라고 알고있었는데 url은 따로따로 등록이되는건가요?웹에서 실제넘겨주면 username과 age를 받는부분의 url이 /servlet/members/new-form인데 이건 request에 대한거 아닌가요? 저기서요청을하면 이제 응답을 받는부분이 /servlet/members/save로 되어야할거같은데 뭔가 url이 바뀐거같아서요항상 답변남겨주셔서 감사합니다
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
ICMP와 방화벽
ICMP에서 운영체제의 방화벽이 Request를 버려버린다고 하셨는데, 그러면 상대방측에서는 어떻게 통신가능한지 확인할 수 있는지 이해가 잘 가지 않습니당
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 스프링 빌드시 libs폴더가 없습니다
현재 5강을 보면서 윈도우 cmd로 스프링 빌드하고 있는데요 빌드에 성공했다고는 떠서 build폴더에서libs폴더로 이동하려는데 libs폴더가 존재하지 않는건 무슨 이유인가요?
-
해결됨
react native에서 nmap 설치 후 Component 'RCTView' re-registered direct event 'topClick' as a bubbling event 에러가 발생합니다
react native 0.73.1node 20.10.0NMapsMap 3.17.0npm i https://github.com/zerocho/react-native-naver-map를 사용해서 nmap을 설치했습니다android 기기에서는 정상적으로 빌드 되는데, ios 시뮬레이터에서는 빌드는 되지만, 아래의 오류가 발생합니다 Component 'RCTView' re-registered direct event 'topClick' as a bubbling event RCTModuleConstantsForDestructuredComponent RCTUIManager.m:1533 moduleConstantsForComponentData __28-[RCTUIManager getConstants]_block_invoke __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] -[RCTUIManager getConstants] -[RCTUIManager constantsToExport] -[RCTModuleData gatherConstantsAndSignalJSRequireEnding:] -[RCTModuleData exportedConstants] facebook::react::RCTNativeModule::getConstants() facebook::react::ModuleRegistry::getConfig(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) facebook::react::JSINativeModules::createModule(facebook::jsi::Runtime&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) facebook::react::JSINativeModules::getModule(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&) facebook::react::JSIExecutor::NativeModuleProxy::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&) facebook::jsi::DecoratedHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&) facebook::hermes::HermesRuntimeImpl::JsiProxy::get(hermes::vm::SymbolID) hermes::vm::JSObject::getComputedWithReceiver_RJS(hermes::vm::Handle<hermes::vm::JSObject>, hermes::vm::Runtime&, hermes::vm::Handle<hermes::vm::HermesValue>, hermes::vm::Handle<hermes::vm::HermesValue>) hermes::vm::CallResult<hermes::vm::HermesValue, (hermes::vm::detail::CallResultSpecialize)2> hermes::vm::Interpreter::interpretFunction<false, false>(hermes::vm::Runtime&, hermes::vm::InterpreterState&) hermes::vm::Runtime::interpretFunctionImpl(hermes::vm::CodeBlock*) hermes::vm::Runtime::runBytecode(std::__1::shared_ptr<hermes::hbc::BCProviderBase>&&, hermes::vm::RuntimeModuleFlags, llvh::StringRef, hermes::vm::Handle<hermes::vm::Environment>, hermes::vm::Handle<hermes::vm::HermesValue>) facebook::hermes::HermesRuntimeImpl::evaluatePreparedJavaScript(std::__1::shared_ptr<facebook::jsi::PreparedJavaScript const> const&) ... 중략 ... std::__1::function<void ()>::operator()() const invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ __CFRunLoopDoBlocks __CFRunLoopRun CFRunLoopRunSpecific +[RCTCxxBridge runRunLoop] __NSThread__start__ _pthread_start thread_start
-
미해결실무자가 알려주는 CANoe - CAPL과 Panel 기본 사용법
에러에 대한 해결 방법에 대해 알고싶습니다.
if((gIGN.BCM_Ign1InSta == 0) && (gIGN.BCM_Ign2InSta == 0)) { GotoMode_BusSleep(); cancelTimer(msTimer_IGN); output(gIGN); } else { gotomode_awake(); setTimerCyclic(msTimer_IGN, Period_200); // bcm_02_200ms 메시지 주기 타이머 시작 }안녕하세요 수업 잘 듣고 있는 학생입니다. 제가 코드를 작성 중에 GotoMode_BusSleep(); 부분에서 unknwon function이라고 뜨는데 뭐가 잘못된건지 모르겠습니다. 예전에도 사용할 땐 잘 됐는데 지금은 갑자기 안됩니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Unreal 애니메이션이 기본적으로 MultiThread 옵션이 켜져있는 점에 대해서.
아마 성능을 위해 애니메이션 블루프린트 로직이 작업자 스레드에서 돌아가도록 옵션 켜는게 있는 것 같은데요. 많은 다른 예제에서 블루프린트 EventGraph 대신 Blueprint Thread Safe Update Animation 이라는 블루프린트 함수를 대신 사용하고 또, C++ 로도 NativeUpdateAnimation() 대신 NativeThreadSafeUpdateAnimation() 가 있더라구요. 그리고 블루프린트 전용 함수에서도 ThreadSafe 옵션을 켜고 끄는게 있는데 이걸 켜면 일반적인 C++ 함수를 호출할 수 없고, C++ 함수에 Meta = (BlueprintThreadSafe) 지정자를 설정하면 보이긴 하는데요. 여기서 NativeThreadSafeUpdateAnimation() 함수나 Meta = (BlueprintThreadSafe) 지정자를 붙인 C++ 함수에는동기화 기법( mutex 같은)을 사용해서 정말 내부적으로도 멀티스레드 프로그래밍 같이 코드를 짜야 하는건가요???
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bindingREsult.hasErrors() 부분 재사용
if(bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); //model.addAttribute("errors", errors); -> model로 넘겨주지않아도 bindingResult 자체로 자동으로 뷰에넘어간다. return "validation/v2/addForm"; }위 코드를 다시 addItemV4의 첫부분에 재사용하는 이유가 먼저 타입오류가 발생하면 밑의 가격 range 오류를 검증하지 않고 바로 "validation/v2/addForm" 뷰로 리턴하여 타입오류 메시지만(하나만) 출력하고 싶을때 이런식으로 하는거죠?