묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
return이 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.addItem도 그렇고 editForm도 상품 등록이나 수정 버튼을 누르면 에러가 뜹니다. 2024-02-20 12:04:29.880 ERROR 71299 --- [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 [validation/v3/editForm ], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause @PostMapping("/add") public String addItem(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.reject("totalPriceMin", new Object[]{10000, resultPrice}, null); } } // 검증 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); return "validation/v3/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:validation/v3/items/{itemId}"; }@PostMapping("/{itemId}/edit") public String edit(@PathVariable Long itemId, @Validated @ModelAttribute Item item, BindingResult bindingResult) { // 특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.reject("totalPriceMin", new Object[]{10000, resultPrice}, null); } } // 검증 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); return "validation/v3/editForm"; } itemRepository.update(itemId, item); return "redirect:validation/v3/items/{itemId}"; }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
객체 createBoardInput을 왜 한번 더 { } 객체로 감싸서 보내는지 궁금합니다.
boards.resolver.ts 파일에서 createBoard 함수에서 boardsService클래스에 인자를 전달할때createBoardInput 객체를 보내는데낱개로 된 writer,title,contents 도 아닌데왜 굳이 한번 더 {createBoardInput} 객체로 감싸서 보내는지 이해가 잘 되지 않습니다. @Mutation(() => String) createBoard( @Args('createBoardInput') createBoardInput: CreateBoardInput, ): string { return this.boardsService.create({ createBoardInput }); //**차이점?? return this.boardsService.create(createBoardInput); } boards.service.ts 파일에서는create({ createBoardInput }: IBoardsServiceCreate): string { //**차이점?? create(createBoardInput: CreateBoardInput): string { //1.브라우저에서 보내준 데이터 확인하기 console.log(createBoardInput.writer); console.log(createBoardInput.title); console.log(createBoardInput.contents); //2. DB에 접속 후, 데이터를 저장 => 데이터 저장했다고 가정. //3. DB에 저장된 결과를 브라우저에 응답(response) 주기. return '게시물 등록에 성공하였습니다.'; }굳이 IBoardsServiceCreate의 인터페이스를 안만들어도이미 CreateBoardInput 이라는 Class를 타입으로 적용해서 받으면 되는데createBoardInput을 왜 한번 더 { } 객체에 감싸서 보내는지 궁금합니다.
-
미해결프로젝트로 배우는 React.js
useState 에 대해
3:20모델 값이 갱신이 안되서 그런건가요?모델이 원웨이로 돼어있나요?useState 를 쓰면 모델이 투웨이로 바뀌는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
RabbitMq 에 대해
현재 강의에서 RabbitMq를 사용하여 어떻게 각각의 서버로 변경된 데이터를 전달하는지 아키텍처가 궁금합니다. 각각의 서버는 RabbitMq서버를 구독하고있는건가요?푸시방식이라고 했는데 각각의 서버가 RabbitMq의 큐에서 메시지를 가져가는 폴링방식이 아닌가요?구독하고있는 각 서버로 브로드캐스트하여 푸시하는 방식이지 폴링방식이 아니라는건가요?busrefresh를 통하여 큐에 메시지를 발행하고, 각 서버는 큐에서 메시지를 꺼내어가져가는건가요(폴링)? 아니면 큐에서 메시지를 RabbitMq가 직접 각각의 서버로 전송하는 푸시방식인가요? 푸시방식이 맞다면 AMQP프로토콜로 서버들이 실행할때마다 이미 연결이 되어있는 상태를 유지하고 있기 때문에 푸시가 가능한건가요?원리가 궁금합니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
allocationSize 질문
IDENTITY전략에서 allocationSize가 50개로 설정하면 50개를 가져와 메모리에서 쓴다고 하셨는데 제대로 이해를 하지 못한것 같습니다. DB에서 1부터 51까지 미리 늘려놓고? 51까지의 메모리..? 어떤 값을 가져와서 em.persist 할때마다 뭐 큐나 스택처럼 하나씩 빼면서 pk값을 넣는건지 궁금하네요. 또 메모리에서 쓴다는게 어떤건지 잘 모르겠습니다. DB에서 꺼내서 쓰는게 아닌것 까지는 이해했지만 메모리에서 쓴다..?를 잘 모르겠습니다
-
미해결확률과 통계 기초
1.3 cardinality 에서 inclusion exclusion principle이 finite set에서만 성립하나요?
inclusion exclusion principle이infinite set 에서도 countable하기만 여전히 공식이 성립한다고 볼 수 있지 않나요?? 또 1.3 에서 a-b 확률이 a - (a and b) 공리3으로 증명하는부분에서 같은 샘플스페이스에서 양변에 같은 확률값을 더하거나 빼도 상관이 없는걸 이용한건가요? 또 이건 공리에 어긋나지 않아 가능한건가요??피피티에 나온 두 식으로 어떻게 식이 나왔는지 이해가안갑닏다 ㅠ
-
해결됨AB 테스트 실무자 완벽 가이드
최소 샘플 사이즈 관련 질문
선생님 안녕하세요 좋은강의 감사합니다. A/B 테스트 실헙계획 - 집단크기 결정 관련해서 내용 질문이 있습니다. 해당 강의의 내용은, AB테스트가 유의미해지려면 필요로하는 최소 샘플사이즈가 있다 인데요 python scipy 에서 ttest_ind 함수를 사용하면요 from scipy import statst, p = stats.ttest_ind(array1, array2, equal_var= False)이런식으로 하면 t와 p가 정해지는데, 여기에서 array 1과 array 2가 최소 샘플 수를 만족시킨다는 보장이 없는 것이잖아요.그럼 여기에서 나온 t p는 어떻게 해석해야 하는건가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
안녕하세요 강의자료 부탁드립니다.
henry0618@naver.com 강의자료 부탁드립니다 감사합니다.
-
미해결
참고할 프로젝트 찾는 방법(kotlin, spring)
안녕하세요!go언어를 하다가 현재 kotlin, spring 을 공부하는 중입니다좋은 프로젝트 샘플을 보면서 어떤 구조로 어떻게 구현되어 있는지전체적인 코드를 보고싶은데,다들 샘플 프로젝트는 어떻게 찾으시나요?기본 CRUD프로젝트라도 좋아요 Github에서 검색해서 찾으시는지, 오픈소스를 찾아보시는지 궁금합니다꿀팁 알려주세요!혹시 괜찮은 코프링 프로젝트를 아신다면 알려주시면 더 감사하겠습니다!
-
해결됨외워서 끝내는 SSL과 최소한의 암호기술
비대칭키 재사용, 발급 관련 문의
안녕하세요. 강의를 듣다보니 궁금한점이 있어서 문의드립니다.다름이 아니라 CA 에서 비대칭키를 생성해서 일정 유효시간 동안 유효하도록 인증서+PrivateKey를 만들어준다고 하셨는데요.비 대칭키에는 많은 전산자원이 든다고 하셨는데, CA 입장에서는 많은 고객들이 인증서 발급을 요청할테니 계속 자원이 많이 들텐데 이 경우 만료된 키를 다른 PC에게 재사용 하기도 할까요??보안상 안할 것 같기는 한데 이때 또 궁금한 점은 CA 가 키쌍을 만들어 냈을때 이전에 만들어낸 키와 중복되지 않게 하는 방법이 있을까요??각 PC 마다 6개월 1년 마다 계속 인증서 및 키를 갱신해주면서 중복되지 않게 하려면 숫자를 계속 키워야할 것 같은데 이 경우 계산이 점점 복잡해질 것 같은데 하드웨어 성능을 업그레이드 해서 그 부분을 보완하는지...아직은 계산하는데 크게 성능을 해칠 정도는 아니라서 상관 없는지 궁금합니다.
-
해결됨3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
9강 -1 마지막 실습
심각: 서블릿 [action]을(를) 위해 할당하던 중 예외 발생java.lang.IllegalArgumentException: Unable to locate method [afterExceptionMethod] on bean [exampleAop]이런 에러가 나옵니다.package egov.lib.util; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleAop { private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class); public void beforeMethod(JoinPoint joinPoint) throws Exception { logger.info("사용자 요청" + joinPoint.getTarget()); System.out.println("사용자 요청" + joinPoint.getTarget()); } }영상을 보고 위 코드처럼 이용하면 문제가 생깁니다. 하지만 수업자료에서 제공하는 전체코드를 이용하면 문제가 없습니다.package egov.lib.util; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleAop { private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class); public void beforeMethod(JoinPoint joinPoint) throws Exception { logger.info("사용자 요청" + joinPoint.getTarget()); System.out.println("사용자 요청" + joinPoint.getTarget()); } public void afterExceptionMethod(JoinPoint joinPoint, Exception exception) throws Exception { // 이외에도 예외처리에는 많은 방법이 존재합니다. ErrorController로 제어등.. logger.error("ST에러발생================="); logger.error("" + exception.getMessage()); logger.error("ED에러발생================="); throw exception; } public void afterMethod(JoinPoint joinPoint) throws Exception { logger.info("메소드 종료"); } public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable { long st = System.currentTimeMillis(); // 핵심기능 수행 Object rtn = joinPoint.proceed(); long ed = System.currentTimeMillis(); System.out.println("성능측정 걸린시간:" + (ed - st)); // currentTimeMillis:1/1000 초 return rtn; } } 위의 코드에서는 문제가없는데 9강 강의 마지막 내용대로 진행하면 문제가 생깁니다. 어떤 문제인지 궁금합니다. dispatcher-servlet.xml 파일에 제공되는 코드에서 aop:after-throwing , aop:after , aop:around 코드를 주석처리를 안하고 진행해서 생긴 문제였습니다.해결했습니다.
-
미해결스프링 시큐리티 OAuth2
password() deprecated
OAUth2AUthorizedClientProviderBuilder.builder() 에서 password() api 가 deprecated 가 됐는데 어떻게 사용해야할까요?
-
해결됨OpenGL 쉐이더 (3) shader 3D 그래픽스 - 애니메이션 원리, depth 개념, Z 버퍼
33-3 피라미드 만들기 - face 생성 시 질문
안녕하세요..!3:15에 face를 형성하기 위해서 꼭지점 잇는 순서가 나오는데요,f4, f5 생성 시에 v1로 시작한 이유가 있는지 궁금합니다..!v2,3,4로 시작할 수는 없나요?
-
미해결파이썬 무료 강의 (활용편6) - 이미지 처리 (OpenCV)
mediapipe 코드를 어디서 받나요??
강의영상의 홈페이지가 변경되었는데 새로운코드는 어디서 받으면 되나요?
-
미해결처음 만난 리액트(React)
npx create-react-app 오류
프로젝트 생성하는 데 오류가 생겨 질문 드립니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
404에러 발생 관련 문의
[질문 내용]코드 동작시에 save에서 예외처리를 안했다고 오류가 발생하는데 혹시 제가 어떤 부분을 잘못했는지 궁금해서 문의 드립니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
트랜잭션 커밋 질문
섹션3 플러시 부분을 듣다가 궁금증이 생겨 질문을 남깁니다.3분에 말씀하신 내용에 따르면 try{ Member member = new Member(200L,"member200"); em.persist(member); em.flush(); //영속 System.out.println("===================="); tx.commit(); } catch (Exception e){ tx.rollback(); }finally { em.close(); } emf.close();em.flush()를 하면 데이터베이스에 쿼리가 나가고 tx.commit()을 통해 트랜잭션 커밋이 된다고 하셨는데 트랜잭션 커밋을 언제 사용하는지?가 궁금합니다. 그냥 플러시를 하기 위해서 쓰이는 것인지 아니면 try catch문으로 되어있어서 try문에서 제대로 동작을 한다면 마지막에 DB에 잘 적용되었다는 느낌으로 commit을 하는것이 맞나요?
-
미해결토비의 스프링 부트 - 이해와 원리
GenericWebApplicationContext : boot 2.* 와 3.* 차이
안녕하세요 토비님 토비님에 강의 어노테이션 매핑 정보 사용강의 내용 중 GenericWebApplicationContext를 사용해서 @RequestMapping이 스프링 부트 2.7에서는 정상적으로 동작을 하는데요 스프링 3.* 에서는 404가 뜨는 상황입니다. GenericWebApplicationContext가 뭔가 변한걸까요? 로그를 보면 3.*는 아예 리플래쉬가 안되는것 같은 느낌이 듭니다. 감사합니다.
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
수업자료 통합본 공유 요청 건
안녕하세요, 강의 잘 수강하고 있습니다.필기 1~2 및 3~4 수업자료 통합본 발송 부탁 드립니다.jinseong.choi@hyosung.com 감사합니다.
-
미해결처음 만난 리액트(React)
리액트 DOM부분 수정
DOM화면의 일부만 찾아서 수정해서 사용자에게 응답해준다고 하였는데 AJAX비동기 통신도 일부 구역만 변경해서 보여주는데 서로 관련이 있나요?? 아직 리액트 처음이라 궁금해서 질문 드려봅니다.