스프링부트에서도 아무문제 없었고 war파일 만들어서 윈도우 cmd로 실행해서 배포시에는 아무문제없이 돌아갔는데 aws ec2에서 하면 이런 오류가 뜨네요 도저히 해결 못하겠습니다.. 이것 저것 찾아봤을 때 그나마 비슷한 현상의 해결법이 WEB-INF/lib 에서 jsp-api.jar이랑 servlet-api.jar 파일이 있으면 삭제하라고 해서 해당 경로를 봤는데 해당 파일이 없는거 보면 이 문제는 아닌 거 같고 아무리 검색 해봐도 모르겠습니다 2024-03-26T17:16:53.768Z ERROR 2046 --- [io-8080-exec-53] o.s.b.w.servlet.support.ErrorPageFilter : Forwarding to error page from request [/mainpage] due to exception [Failed to load or instantiate TagLibraryValidator class: [org.apache.taglibs.standard.tlv.JstlCoreTLV]] org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: [org.apache.taglibs.standard.tlv.JstlCoreTLV] at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:54) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:301) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:143) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:368) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:196) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:487) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Parser.parse(Parser.java:138) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.ParserController.parse(ParserController.java:106) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:396) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) ~[jasper.jar:10.1.20] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) ~[jasper.jar:10.1.20] at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) ~[jasper.jar:10.1.20] at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396) ~[jasper.jar:10.1.20] at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380) ~[jasper.jar:10.1.20] at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328) ~[jasper.jar:10.1.20] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[servlet-api.jar:6.0]
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
똑같은 이름의 책 등록을 막기 위해서는 스프링 부트의 멀티스레드 구조와 단일 인스턴스 - 서버가 1대인 경우 - 일 때의 synchronized 구문, 멀티 인스턴스 - 서버가 N>=2 대 인경우 - 일 때의 DB unique key 등을 언급해야 하고, (이 과정에서 서버의 인프라도 설명이 들어갑니다!) 동시 대출을 방어하기 위해서는 DB의 Lock(잠금) 종류와 원리에 대해 설명해야 합니다. 이렇게 답변주셨는데 대용량 트래픽 개인프로젝트를 설계한다고 해야한다면 서버를 여러대 생각을 하고 DB unique key를 생각을 해야할지 먼저 서버 1대를 생각하고 synchronized 구문으로 똑같은 이름의 책 등록을 막아야할지 고민입니다.!!
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
비즈니스 요구사항,기술적인 요구사항,도메인 아키텍처 등 여러 부분을 고민해서 연관관계를 사용을 선택해야한다고 하셨고 도메인을 설계할 때 이거는 이렇게 하니까 이렇게 하자 저거는 저렇기 때문에 저렇게하자라고 하셨습니다. 실례가 될수 있지만 강사님께서는 어떻게하시는지 예시를 좀 들어주실수 있을까요..? 개인프로젝트할때 도움이 될것같습니다!!!
웹디자인기능사 실기시험을 보고 왔는데 제이쿼리는 전부 구동되는 것까지 확인하고 나왔습니다. 그런데 제가 실수로 css부분의 헤더와 푸터 부분의 사이즈를 잘못 잡았더라구요... 헤더와 푸터 부분은 100%, 나머지는 1200px이었는데 전체 다 1200px로 잡아버렸어요 감점 많이 될까요...? 그리고 탭메뉴 옆에 배너와 바로가기 부분은 상단에 "배너" "바로가기" 이렇게 제목을 적지 않고 백그라운드 이미지로 박스를 꽉 채워 안에 제공된 텍스트만 삽입했습니다. 이 부분은 문제되지 않겠지요?? 이 문제였습니다 ㅜ^ㅜ
돌아오는 토요일에 시험을 보는데, 모든 유형 다 만들 수 있어도 혹시 라도 실수할까 복습을 계속 하고 있거든요! 그러다 문득 F 유형 slide-banner 각 이미지 옆에 link 1,2,3,4 라고 적혀있는 글자 입력을 해야 할 경우 어떻게 넣는 게 좋을지 고민하다가 조언 듣고 싶어서 질문 남깁니다. 갤러리에서 사진 밑에 span으로 글자를 입력 해야 하는데, 혹시 배너도 갤러리처럼 링크 설명 글자를 넣으라는 지시가 있을까봐 대비해서 가고 싶습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용] 여기에 질문 내용을 남겨주세요. 현재 스프링을 공부중에 있습니다. 김영한님의 커리큘럼 순서대로 가려고 하는데 궁금한 점은 1. 스프링 입문부터 스프링 부트 - 핵심 원리와 활용까지 그냥 쭉 한번 보면서 코드 따라 치고 다시 처음부터 복습하는 게 좋을까요? 2. 아니면 입문을 보고 다음으로 넘어가면서 새로운 거 학습 + 입문 복습 이렇게 하는 게 좋을까요? 어떤 공부법이 더 좋을지 궁금합니다. 제 상태는 거의 스프링 초보라고 생각하시면 됩니다. 현재는 이해가 안되더라도 1번 형태로 쭉 한번 따라하고 2번째부터 2번 방식으로 할 예정입니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 예제에 이렇게 request를 보내면 아래의 형태로 response를 받음을 알 수 있습니다. 하지만 제 예상엔 defaultMessage에 errors.propseties에 있는 NotBlank={0} 공백X 형태로 default 메세지가 와야한다고 생각했습니다. 혹시 제 생각대로 작동하지 않는 이유는 무엇일까요. 또 errors.properties 의 값을 defaultMessage에 담을 수 있는 방법이 있을까요?
rds가 private subnet에 있어서 외부에서 접근이 불가능하다면 로컬에서 사용 하는 DB툴로 접근이 안되잖아요. 그렇다고 같은 VPC 내의 EC2로 매번 SSH연결을 해서 터미널창에서 쿼리날릴수도 없고.. 보통은 어떤식으로 하나요? rds를 public / private 스위칭하면서 접근하나요?
안녕하세요. 제로초님, 강의 도움이 많이 되고 있습니다. 다름이 아니라, webpack-dev-server를 실행을 했을 때, app.js파일은 잘 가져오는데, 화면이 랜더링 되지 않습니다. (아래 사진 참고) 크롬 확장 프로그램(React Developer Tools)도 활성화되지 않는 걸 보아 React 코드가 랜더링 되지 않는 거 같습니다. 이전 강의처럼 dev server를 쓰지 않고, 웹팩 빌드 후 index.html 에 접근하면 정상 적으로 랜더링이 됩니다. 제 추측으로는 dev-server로 웹펙 빌드를 할 때의 설정 문제일 거 같은데, 추적이 쉽지 않은데 어떤 부분을 확인하면 좋을지 살펴봐주실 수 있으실까요? ( _ _ )
1 서비스에서 체크후 예외를 던지는것과 stock에서 체크후 예외를 던지는 것은 다르다라는것이 잘 이해갸 되지 않습니다 강의 내용을 보아도 잘 이해가 되지 않아 굳이 이렇게 나눠야하는지에 대해 다시한번 설명 부탁드립니다 ㅜㅜ 또한 저는 stock 객체 자체에 판단할 수있는게 좋지 않나? 즉 stock의 책임이지 않을까?란 생각을 통해 service에서 stock 객체가 할일을 가지고 가면 응집도 면에서 좋지 않다라는 생각을 가지고 있는데요 이에 대해 어떻게 생각하시나요? public boolean isQuantityLessThan(int quantity) { return this.quantity < quantity; } public void deductQuantity(int quantity) { if (isQuantityLessThan(quantity)) { throw new IllegalArgumentException("차감할 재고 수량이 없습니다."); } this.quantity -= quantity; } 2 테스트를 위한 코드 강의 내용 중 OrderCreateRequest와 관련되어 테스트를 위한 생성자가 생성되었다고 생각을 하는데요 테스트를 위한 코드에 대해 어떻게 생각하시는지 궁금합니다 저는 테스트를 위한 코드를 생성하면 안된다라고 생각하는데요 이유는 테스트를 위한 것으로 만들어 놨지만 다른곳에서 사용하게 되는 같은 현상이 발생될 수 있다라고 생각기때문입니다. OrderCreateRequest request = OrderCreateRequest.builder() .productNumbers(List.of("001", "002")) .build(); 3 어떤걸 어디서부터 어디까지 테스트해야되나?라는 의문입니다. OrderService를 구현하면서 Order와 관련된 테스트(Order.create()등등)를 진행하였고 또한 주문을 통해 생성된 OrderResponse에 대한 테스트를 진행하는 것을 보았습니다. 아래는 Order와 관련된 코드입니다 public Order(List<Product> products, LocalDateTime registeredDateTime) { this.orderStatus = OrderStatus.INIT; this.totalPrice = calculateTotalPrice(products); this.registeredDateTime = registeredDateTime; this.orderProducts = products.stream() .map(product -> new OrderProduct(this, product)) .collect(Collectors.toList()); } public static Order create(List<Product> products, LocalDateTime registeredDateTime) { return new Order(products, registeredDateTime); } private int calculateTotalPrice(List<Product> products) { return products.stream() .mapToInt(Product::getPrice) .sum(); } 이 코드에서 아래에 해당하는 코드만 테스트를 진행하셨는데요 this.orderStatus = OrderStatus.INIT; this.totalPrice = calculateTotalPrice(products); this.registeredDateTime = registeredDateTime; 만약에 위와 같은 컬럼이 끝이아니라 아래와 같이 수많은 컬럼이 있다면 이 모든것들을 다 테스트 해주어야 하는걸까요? 제 의문은 어떤것은 테스트하고 어떤것은 테스트 하지 말아야하나? 모든것들 전부 테스트 해야하나? 어디서부터 어디까지 테스트를 해야되지라는 정답이 없는 고민이 있어 강사님의 의견을 여쭙고자 질문을 드려봅니다 this.orderStatus = OrderStatus.INIT; this.totalPrice = calculateTotalPrice(products); this.registeredDateTime = registeredDateTime; ... ... ... ... ... ...은 컬럼을 의미합니다 아무거나 다른 컬럼을 생각해주셔도 좋습니다! 어떠한 한가지만을 테스트할때는 강사님이 말씀해주신것처럼 경계값이든 무엇이든 기준을 가지고 테스트를 진행하면 될텐데 OrderResponse나 그런것들 즉 어떤것에 의해 생성된것에 대해 테스트를 해야할때 어디서부터 어디까지 테스트를 해야하는지 잘모르겠습니다. 혹시 가능하시다면 어떤기준을 가지고 어떤것에 대해 테스트를 하시는지 어디서부터 어디까지 테스트를 해야하는지에 대한 생각을 가지고 있으시다면 말씀부탁드립니다 4 OrderService에 대한 테스트를 어디서부터 어디까지 어느정도 테스트해야하나입니다 지금은 아래와 같은 것들을 테스트 해주고 있는데요 assertThat(orderResponse.getId()).isNotNull(); assertThat(orderResponse) .extracting("registeredDateTime", "totalPrice") .contains(registeredDateTime, 4000); assertThat(orderResponse.getProducts()).hasSize(2) .extracting("productNumber", "price") .containsExactlyInAnyOrder( tuple("001", 1000), tuple("002", 3000) ); 만약 Order Service에 대한 로직이 복잡해지고 결제나 뭐 등등 이런것들이 증가가 된다면 그런부분들도 모두 test에서 검증을 해줘야하는걸까요? 만약 모두 그런부분들을 검증해준다고하면 구현부분이 조금 바뀐다고해도 테스트가 쉽게 깨질 수 있다라고 생각하는데요 그래서 생성이라면 생성과 관련된 테스트만 잘 테스트를 해야하는것인가 아니면 내부 구현에 대한 테스트도 진행을 해야하는것인가에 대한 의문이 있는데 강사님은 어떻게 생각하시나 궁금하여 질문을 드려봅니 5 앞에서 한 테스트를 뒤에서도 검증 해야하나? 라는 의문입니다 stock에 대한 단위테스트를 진행하면서 감소 메서드에 대한 테스트도 진행하였습니다. 그런데 OrderService에서 아래와 같은 코드로 검증을 해주는데요 List<Stock> stocks = stockRepository.findAll(); assertThat(stocks).hasSize(2) .extracting("productNumber", "quantity") .containsExactlyInAnyOrder( tuple("001", 0), tuple("002", 1) ); 항상 의문이었던 것은 다른 곳에서 테스트를 통해 검증이 끝난것도 다시 테스트를 해줘야하나라는 의문입니다. 이 코드 말고도 이와 비슷한 현상이 발생할 수 있을거 같은데요 다른 코드에서 검증을 진행해주는 코드를 앞 layer에서나 다른곳에서 쓸떄 또 검증을 해줘야하나라는 의문이 있습니다. 6 메일에관한 테스트는 하지않는걸까요? 서비스테스트 중에 외부에 관한 즉 메일링 관련된 것은 목킹한것을 보았습니다. 그러면 메일에 관한 것은 단위테스트를 통해서 하는 것인지 아니면 그냥 잘동작하는것이라고 가정하고해야 하는걸까요? (그것을 테스트할 수 없기 때문에?) 7 밸리드는 모두 테스트? 프레젠테이션 레이어 즉 컨트롤러 테스트 중 밸리드에 관련된 부분은 보통 모두 테스트 하시는편인가요 아니면 정말 필요하다고 생각되시는 부분만 하시는지 궁금합니다. 모두 하면 모두 검증을하는거니 당연히좋겠지만 이것도 모두 비용이라 생각하는데 이런것들도 모두해야되나?라는 의문이 들어 질문드립니다 적다보니 의문이 많이 생겨 주절주절 적어봤는데요.. 좋은 테스트 코드를 지향하면서 테스트를 통해 깔끔하게 문서화하고 이를 통해 신뢰도 있는 프로그램을 만들지에 대한 고민을 하면서 정답이 없는 고민들에 대해 생각이 들었고 이 강의로 이끌리게 되었습니다 혹시나 제 질문이 잘이해가 되지 않으신다면 말씀부탁드립니다!
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
날짜 범위 선택 기능 구현 작업중인데 범위 지정시 선택한 두 날짜 스타일을 변경할 수 가 없어요 CalendarBuilders > rangeStartBuilder, rangeEndBuilder 속성이 호출되지 않아요 rangeStartBuilder, rangeEndBuilder 를 트리거하는 방법이 있을까요? 아님 아직 구현이 안되어 있을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 패키지 import를 할때 import는 하나만 할 수 있다고 하셨는데 a패키지와 b패키지에 클래스명이 User로 같아서 하나만 할 수 있다는건가요? 직접해보니까 c라는 패키지를 만들어서 클래스명을 User로 안하니까 import가 되더라고요 만약 그렇다면 강의에서 보통 자주쓰는 패키지를 임포트하고 다른 패키지는 풀네임으로 쓴다고 하셨는데 그냥 클래스명만 조금 바꾸고 둘다 임포트해서 쓰는게 더 낫지 않나요?
Name for argument of type [java.lang.Long] not specified, and parameter name information 이 예외 뜨시는분들 @PathVariable(" ") 파라미터 이름 지정해주셔야할듯 3.2이후 버전부터 파라미터 이름 자동으로 추론하지 않도록 변경됐대요