클래스의 생성자 강의 내용 중에서, 1. 젤리 리스트 형식에서 jelly=[teddy_jelly('red', 'strawberry'), teddy_jelly('yellow','lemon')]의 teddy_jelly('red', 'strawberry') 이 부분은 함수의 인수로 이해하면 될까요. 그것을 젤리라는 변수에 담은 것으로요. 2. 그리고 jelly인스턴스 속성에 접근하는 방법에서 print(jelly[0].color)는 위의 리스트에서 0번째 위치의 color값을 의미할텐데 .color의 형식이 함수의 표기와 비슷합니다. 이 부분이 맨 위 매소드 작성 시 self.color=color라고 작성한 부분과 관련이 있는지, 아니면 그냥 단순 작성 규칙인 지 질문드립니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 17:13경 하신 설정이 최신 intellij와 스프링부트에서도 필요한 설정인가요? 어떤 기능을 하는 설정인지 궁금합니다. 2025년 기준 인텔리제이에서 확인할 수 없어 여쭙습니다.
안녕하세요 토비님! 좋은 강의 정말 감사드립니다. @TestConfiguration 에 대한 설명을 해주신 부분 중에서 테스트 결과와 다른 부분이 있는 것 같아 확인차 질문 드립니다. <28. 회원 애플리케이션 서비스 테스트 (2)> 의 11:38에서 " @TestConfiguration 에 어떤 Bean을 정의하면 이게 우선이 되어 돌아갑니다." 라는 말씀을 해주셨는데요. 해당 말씀이 맞는지 테스트해 보기 위해, 현재의 강의 예제 코드에서 @TestConfiguration 이 붙은 클래스의 PasswordEncoder 를 정의한 Bean 메서드의 이름을 testPasswordEncoder로 변경하고 테스트를 돌려 보니 아래와 같은 오류가 발생하였습니다. ( EmailSender 의 경우 DummyEmailSender에 @FallBack 이 붙어 있어서 @TestConfiguration 의 EmailSender Bean 메서드의 이름을 다르게 구성하더라도 테스트는 정상적으로 동작합니다.) @TestConfiguration 이 정의되었다고 해서 우선순위로 동작하지는 않는 것으로 보이고, 기존 Bean의 적용 우선순위에 따라 @TestConfiguration 에서 정의한 메서드 이름과, 이를 사용하는 곳의 필드 이름이 동일한 경우 해당 Bean을 찾아서 동작하는 것으로 보였습니다. 혹시 제가 잘못 이해하고 있거나 보완이 필요한 부분이 있다면 편히 말씀 부탁드립니다. 확인 부탁드립니다. 감사합니다 :)
spring_cloud_gateway_requests_seconds_count{ httpMethod ="GET", httpStatusCode ="401", instance ="localhost:8000", job ="apigateway-service", outcome ="CLIENT_ERROR", routeId ="user-service", routeUri ="lb://USER-SERVICE", status ="UNAUTHORIZED"} 22 spring_cloud_gateway_requests_seconds_count{ httpMethod ="GET", httpStatusCode ="404", instance ="localhost:8000", job ="apigateway-service", outcome ="CLIENT_ERROR", routeId ="order-service", routeUri ="lb://ORDER-SERVICE", status ="NOT_FOUND"} 회원가입과 로그인만 하더라도 이러한 것들의 숫자가 올라가 총 요청 수 중 성공한 숫자가 매우 적습니다. chat gpt에서는 자동으로 health-check를 해서 그렇다라고는 하는데 정확히 어떤 것이 문제인지 잘 모르겠습니다.
안녕하세요, 코드 마지막에 순열의 중복 제거를 위한 로직을 for i in range(...): ans //= fact(S.count(chr(i))) 아래처럼 직접 분모를 먼저 구하는 방식으로 구현하고 대입했는데 채점에서 풀이가 틀렸다고 나옵니다. deno = 1 for i in range(...): deno *= S.count(chr(i))) ans = int(ans/deno) 순열 공식상 순열의 개수 ans/deno는 항상 정수가 나옴이 자명함에도 왜 //=를 써야 정답이 되는지 궁금합니다.
혹시나 못보실까 싶어서 글로 남겨요 여기 답변입니다. 환경변수 설정잘되있고 ide 상에서 java -version 쳤을때 잘나옵니다 ㅠㅠ start.spring.io 여기서 만들떄도 21 버전으로 선택했구요 혹시나 문제 있나싶어서 ide도 다시 지웠다 깔고, jdk도 다시 지웠다 깔고 , start.spring.io 도 다시 새로 하고 해도 안되네요 ㅠㅠ Execution failed for task ':restapi.prac.PracApplication.main()'. > Process 'command 'C:\Program Files\Java\jdk-21\bin\java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . BUILD FAILED in 9s 3 actionable tasks: 1 executed, 2 up-to-date 이 에러메시지가 도대체 뭔질 모르곘네요,,, gpt한테 물어봐도 알수없는 말만하고... 만들어보고싶은데 시작도 못하고 있으니 너무 답답하네요.... gpt 계속 괴롭혀도 이상한말만해요
일단 여기서 이렇게 뜨구요 이거 전에 Spring Initializr 여기서 설정하고 그거 열어줘서 작업하는건데 저렇게 뜨는데 어떻게해야하나요... 혹시나 PracApplication.java 에서 실행하면 Execution failed for task ':restapi.prac.PracApplication.main()'. > Process 'command 'C:\Program Files\Java\jdk-21\bin\java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . BUILD FAILED in 12s 3 actionable tasks: 1 executed, 2 up-to-date 이렇게 또 에러가 뜨구요... 추가로 ai답변으로 build.gradle 의 dependencies 확인하래서 이거 확인했는데 이상없는거 같고 정상적으로 C:\Program Files\Java\jdk-21\bin\java.exe 이 경로에 있습니다. 마지막으로 이렇게 build.gradle을 연 상태로 run을 하면되는데 (localhost:8080 은 안열림) application.properties 에서는 run 버튼 자체가 활성화가 안되있고 PracApplication.java 에서는 run이 활성화는 되있지만 계속 제가 말헀던 에러가 뜹니다 제발 ai답변말고 선생님이 답변해주시면 감사하겠습니다
일단 여기서 이렇게 뜨구요 이거 전에 Spring Initializr 여기서 설정하고 그거 열어줘서 작업하는건데 저렇게 뜨는데 어떻게해야하나요... 혹시나 PracApplication.java 에서 실행하면 Execution failed for task ':restapi.prac.PracApplication.main()'. > Process 'command 'C:\Program Files\Java\jdk-21\bin\java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . BUILD FAILED in 12s 3 actionable tasks: 1 executed, 2 up-to-date 이렇게 또 에러가 뜨구요...
안녕하세요, 토비님! 훌륭한 강의 너무너무 잘 듣고 있습니다. 토비님의 고견 덕에 제 개발 세계관을 정리하는데 도움이 많이 되고 있습니다. 감사합니다. 강의의 데이터 검증 파트에서 질문이 있습니다. MemberRegisterRequest 의 검증 방법으로 jakarta.validation 을 사용하도록 설명해주셨는데요. (1) MemberRegisterRequest 의 생성자 또는 팩토리 매서드에서 값을 검증하는 방식과 validation 어노테이션을 이용하는 방식을 어떻게 구분해서 쓰는지? 와 (2) validation 어노테이션이 활용되는 영역의 범위가 궁금합니다. 저는 코틀린 스프링부트로 강의를 따라가고 있어서 코틀린 기준으로 예시를 들면, 보통 저렇게 도메인 레이어에서 비즈니스 로직에 직접 사용되는 데이터를 검증하는 경우에는 코틀린의 init 블록 내에 비즈니스 관련 데이터 검증 로직을 넣어서 해당 클래스 객체의 데이터 정합성이 항상 보장되게 해왔는데요. (게다가 도메인 레이어의 클래스다보니 더욱 타 기술 의존 없이 검증하는 게 좋다고 생각해서 init 블록을 애용해왔습니다.) 반대로, Valid 는 외부로부터 입력 받은 데이터들의 아주아주 기본적인 데이터 타입 검증 용도(Nullable, 숫자, 이메일, 공백 여부 등) 정도로만 사용해왔습니다. 애초에 제공해주는 어노테이션의 기능이 비즈니스 의미를 담기엔 턱없이 부족해서, "데이터가 비즈니스 의미상으로는 틀릴 수 있어도, 타입 자체는 맞아" 정도만 보장해주는 용도라고 느꼈습니다. 그래서 강의에서 어플리케이션 서비스의 파라미터나 도메인 객체의 상태를 검증하는 용도로 사용하시는 모습이 조금 낯설게 느껴졌습니다. 어플리케이션 서비스 파라미터에 들어있는 데이터는 이미 컨트롤러에서 기본 검증은 끝난 데이터들이라고 생각해서요. 게다가 Valid 를 어플리케이션 서비스에서도 쓰기 시작하면, 컨트롤러와 서비스에서 중복 검사를 하게 될 것 같습니다. 이런 점들에 대해서 어떻게 생각하시고 어떻게 구분하시는지 그 기준이 궁금합니다. Q&A 의 다른 질문들에 대한 토비님의 답변들을 보면서도 많이 배우고 있습니다. 고견 감사합니다! 🙂
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
4일차 과제의 문제 1번을 해결하려고 코드를 작성하고 Table도 생성해서 run 해보았는데, 자꾸 Table not found 에러가 뜨면서 500 internal error가 발생합니다. 이 에러 때문에 테이블도 3번 다시 생성하고, show tables 했을 때도 table이 모두 잘 출력됩니다. 대소문자 바꿔서도 다 해봤는데 왜 이런 오류가 뜨는지 모르겠습니다..ㅜㅜ 도와주세요ㅠ