묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
message 처리 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 제가 이번 강의를 듣고 제 토이 프로젝트에 메세지 처리를 추가 하고 싶어서 Bean Validation을 이용한 검증 코딩을 해봤는데요 @Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class LoginRequest { @NotBlank @Size(min = 2) @Email private String email; @NotBlank @Size(min = 8, max = 20) private String password;}------------------------------------------------------------------------------------------------- @Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class UserCreateRequest { @NotBlank @Size(min = 2) @Email private String email; @NotBlank @Size(min = 8, max = 20) private String password; @NotBlank @Size(min = 2) private String name;} 위와 같이 DTO를 만들고 @PostMapping("createUser")public Result<UserResponse> createUser(@RequestBody @Valid UserCreateRequest request) throws NotFoundException { return Result.success(userService.createUser(request));} 컨트롤러에서 @Valid 어노테이션을 줘서 회원가입을 검증하도록 했습니다. 저는 LoginRequest와 UserCreateRequest의 fieldName이 같고 제약 조건도 거의 똑같다고 생각해서 message 처리를 범용성 있게 하면 좋겠다고 생각했고 그래서 validation-properties를 만들고 그 안에 errorCode + objectName + fieldName 보다는 errorCode + fieldName에 관한 메세지 처리를 했는데요 yml server: port: 8060spring: application: name: potato-velog-user datasource: url: jdbc:h2:mem:testdb driver-class-name: org.h2.Driver h2: console: enabled: true settings: web-allow-others: true path: /h2-console messages: basename: validation encoding: UTF-8eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka validation-properties NotBlank.email = 이메일을 입력해주세요.NotBlank.password = 비밀번호를 입력해주세요.NotBlank.name = 이름을 입력해주세요Size.email = 이메일은 최소 {0}글자 이상이어야 합니다.Size.password = 비밀번호는 최소 {0}글자 최대 {1}글자 이하여야 합니다.Size.name = 이름은 최소 {0}글자 이상이어야 합니다.Email = 이메일 형식이어야 합니다.NotBlank = 공백 안돼요Size = 사이즈 지키세요 그리고 나서 저는 postMan을 이용해 검증을 시도해 봤는데 { "email" : "aaa@naver.com", "password" : "11111111", "name" : "a" } 제가 예상했던건 UserCreateRequest의 name이 Size 조건을 만족하지 못헀기 때문에 Size.name에 관한 메세지(이름은 최소 2글자 이상이어야 합니다) 가 나올거라 생각했는데 Validation failed for argument [0] in public com.velog.veloguser.domain.utils.Result<com.velog.veloguser.domain.dto.response.UserResponse> com.velog.veloguser.controller.UserController.createUser(com.velog.veloguser.domain.dto.request.UserCreateRequest) throws javassist.NotFoundException: [Field error in object 'userCreateRequest' on field 'name': rejected value [a]; codes [Size.userCreateRequest.name,Size.name,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userCreateRequest.name,name]; arguments []; default message [name],2147483647,2]; default message [크기가 2에서 2147483647 사이여야 합니다]] 위와 같이 DefaultMessage가 '크기가 2에서 2147483647 사이여야 합니다' 라고 나옵니다. 저는 왜 메세지가 저렇게 나오는지 이해가 안가고 만약 Size.name에 관한 메세지를 찾지 못했더라도 Size = 사이즈 지키세요 라는 메세지가 validation-properties에 있기 때문에 '사이즈 지키세요' 라는 메세지가 출력되었어야 하는거 아닌가요?
-
미해결Do it! 자바 프로그래밍 입문 with 은종쌤
annotation 제거하라고뜹니다...ㅜ
NoteBook 에 display메서드 만들면 annotation제거하라고 뜹니다 MyNoteBook 도 마찬가지로 제거하거나 , NoteBook 에 typing in super type 생성하라고 뜹니다.. DeskTop은 abstract 하지않았고 NoteBook 만 했습니다. ComputerTest 에서채 Computer c2 = DeskTop(); 하면 Computer로 캐스트하던지 DeskTop으로 타입을 바꿔라고 뜹니다.. 영상을 세번쨰 돌려보는중인데 왜그런지 잘 모르겠습니다. ㅜㅜㅜ
-
미해결실전! 웹사이트제작! Step by Step! ('라한호텔' 사이트제작_Application Course)
span에 display: block줘서 text-align: right 된 부분 문의드려요
안녕하세요 쌤, 몇가지 문의드려요. .notice_list{width: 90%; float: left; padding-top: 98px; overflow: hidden;} .notice_list ul{} .notice_list ul li{float: left; width: 33.3333%;padding-right: 50px; box-sizing: border-box; } .notice_list .data{display: block; text-align: right;} .data가 span인데 text-align: right이 되려면 블럭요소가 되어야하는게 맞나요? 보통은 부모한테 주면 인라인 자식들이 움직이던데 이부분은 자식이다 적용되면 안되니까 .data만 오른쪽으로 보내려는데 블락요소도 text-align이 되나해서요. 그리고 overflow: hidden을 플롯한 자식의 부모에 주는데 header파트에서 부모에게 안줘도 아무일이 없던데 그런경우도 있는건가요? 그리고 하도 줄상황이 많으니까 cf클래서를 만들어서 부모마다 다 붙이는것도 봤는게 그렇게 하는게 일반적인가요? 감사드립니다~ 초보라 계속 헷갈리는 부분이 많네요.ㅜㅜ
-
해결됨Vue.js 시작하기 - Age of Vue.js
div loading
loading div는 Vue인스턴스 생성할 때 el로 연결 안 해줬는데 v-if를 어떻게 사용할 수 있는지 궁금합니다. el로 연결해준 태그 안에서만 vue 기능을 사용할 수 있는 줄 알았는데 아닌가요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
header 와 body 사이에 margin이 생깁니다.
위처럼 자동으로 마진이 생깁니다... 해결할수있는 방법이 있을까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
노드 모듈스 파일 질문입니다.
저번 강의까진 노드 모듈스 파일이 없었고 갑자기 생겨서 저도 다운받으려고 create-react-app .을 했는데 사진처럼 뜹니다. web이란 폴더 안에 market_web, marker_server 두개의 폴더가 있고 market_web에 깔려있다고 다른 파일인 marker_server에 깔 수 없는건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Extension 문법
안녕하세요 해당 클래스 디자인 패턴??이 너무 신기해서 원리 구조가 궁굼해서 여쭈어 봅니다. 추측상 정적 특징과 + this의 기능이 합쳐져서 GameObject go; go.AddUIEvent(go(암시적), Action, Define); 이렇게 된다는 것인데... 이게 좀 논리적으로 보았을 때, c#이 억지로 기능을 편의상 개조했다?? 이런 느낌을 받습니다.
-
미해결하루만에 만드는 깃허브 블로그
계속 진행하는 데 Could not find jekyll-3.8.6 in any of the sources 라는 오류가 계속 뜹니다.
bundle exec jekyll serve 를 하는데 다음과 같은 오류가 계속 뜨는데 어떻게 해야하나요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
C 코드 for 구문 질문
아래 C 코드에서 두 번째 for 구문에요. 변수 j에 대한 언급이 없는데 어떻게 이게 i 의 8승이 될까요? 이 강의가 C 강의가 아닌 거 잘 알고 있는데요.. 아무리 뒤져봐도 명확이 설명해주는데가 없어서 염치불구 하고 여쭤 봅니다. =========================== for (int i = 0; i<100; i++){ long result = 1; for(int j = 0; j < 8; j++) { result *= i; } =========================== 그럼 항상 좋은 강의 감사합니다.
-
미해결
이런 프로그램을 만들고 싶을때 어떤걸 배워야 하는지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아래 링크같은 형태의 견적프로그램을 제작해보고 싶습니다. 업무의 엄청난 도움이 될 상황이어서 배워보려 하는데, 어떤 언어와 어떤코스를 배워야 가능할지가 궁금합니다. http://estimate.ganpancall.co.kr/default.aspx?GIDX=1538154532262
-
미해결윤재성의 Google 공식 언어 Kotlin 프로그래밍 시작하기
배열 함수 중 .max() 와 .min() 사용 시 오류가 발생됩니다. 해결 방안을 알고 싶습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 배열 함수 중 .max() 와 .min() 사용 시 오류가 발생됩니다. 오류 문구는 다음과 같습니다. Kotlin 고수 선생님들 해결방법 부탁드립니다. 감사합니다. 아울러 아래에 42강 배열 강의 수강하며 작성한 Main.kt 내용 올려드립니다. /* Array - 배열은 그 크기가 늘어나지 않습니다. 1. Array() [형식] Array(개수, {식}) {예시 1} val array0 = Array(5, {100}) // => array0 : [100, 100, 100, 100, 100] {예시 2} 2. arrayOf() - 다양한 형태의 자료형을 저장할 수 있습니다. - 저장할 자료형을 제한하고 싶다면 자료형 + arrayOf() 형태의 함수를 사용합니다. : intArrayOf(), doubleArrayOf(), booleanArrayOf() ... - arrayof<Generic> 도 가능합니다. [형식] array(10, 20, 30 ...) array(10, 11.11, "문자열", true ...) 3. */ fun main() { val array1 = arrayOf(10, 20, 30, 40, 50) println("array1 : $array1") println("array1 : ${array1.contentToString()}") // => array1 : [10, 20, 30, 40, 50] val array2 = arrayOf(100,11.11, "문자열", true) println("array2 : ${array2.contentToString()}") // => array2 : [100, 11.11, 문자열, true] val array3 = intArrayOf(10, 20, 30, 40, 50) val array4 = doubleArrayOf(11.11, 22.22, 33.33, 44.44, 55.55) val array0 = booleanArrayOf(true, false, true, false) val array5 = arrayOf <String>("문자열1", "문자열2", "문자열3") println("array3 : ${array3.contentToString()}") println("array4 : ${array4.contentToString()}") println("array0 : ${array0.contentToString()}") println("array5 : ${array5.contentToString()}") val array6 = Array(5, {100}) println("array6 : ${array6.contentToString()}") val array7 = Array(5, {it * 2}) // it 내부에는 1부터 1씩 증가되는 값이 존재합니다. println("array7 : ${array7.contentToString()}") println("----- For -----") var count = 1 for (item in array1) { println("array1 ($count) : $item") count++ } println("----- Multi-Dimensional Array -----") val array8 = arrayOf(arrayOf(10,20,30), arrayOf(40,50,60), arrayOf(70,80,90)) println("array8 : $array8") println("array8 : ${array8.contentToString()}") // 다차원 배열 출력 방법 .contentDeepToString() println("array8 : ${array8.contentDeepToString()}") for (item1 in array8) { println("item1 : $item1") for (item2 in item1) { println("array8.item : $item2") } } println("----- 배열 출력 사용 방법 -----") println("array1 0 : ${array1[0]}") println("array1 1 : ${array1[1]}") println("array1 2 : ${array1.get(2)}") println("array1 3 : ${array1.get(3)}") println("----- 배열 요소 변경 -----") println("array1 : ${array1.contentToString()}") array1[0] = 100 println("array1 : ${array1.contentToString()}") println("----- 배열 크기 -----") println("array1 size : ${array1.size}") println("----- Kotlin 배열 제공 함수 -----") println("array1 : ${array1.contentToString()}") val array10 = array1.plus(60) println("array1 : ${array1.contentToString()}") // 변화 없습니다. println("array10 : ${array10.contentToString()}") // .plus 함수를 통해서 array10 이라는 새로운 배열을 생성해야 출력이 됩니다. val array11 = array1.sliceArray(1..3) // 배열 요소 추출 println("array11 : ${array11.contentToString()}") // => array11 : [200, 30, 40] println("첫 번째 값 : ${array1.first()}") // => 첫 번째 값 : 100 println("마지막 값 : ${array1.last()}") // => 마지막 값 : 50 println("30의 위치 : ${array1.indexOf(30)}") // => 30의 위치 : 2 println("평균 : ${array1.average()}") // => 평균 : 84.0 println("합 : ${array1.sum()}") // => 합 : 420 println("개수 : ${array1.count()}") // => 개수 : 5 println("개수 : ${array1.size}") // => 개수 : 5 (size Property) println("30을 포함하는가 : ${array1.contains(30)}") // => 30을 포함하는가 : true println("1000을 포함하는가 : ${array1.contains(1000)}") // => 1000을 포함하는가 : false println("30을 포함하는가 : ${30 in array1}") // => 30을 포함하는가 : true println("1000을 포함하는가 : ${1000 in array1}") // => 1000을 포함하는가 : false val array15 = arrayOf(100, 200, 300) // println("최대 : ${array15.max()}") // println("최소 : ${array1.min()}") val array12 = arrayOf(5, 1, 3, 7, 10, 8) val array13 = array12.sortedArray() val array14 = array12.sortedArrayDescending() println("array13 : ${array13.contentToString()}") // => array13 : [1, 3, 5, 7, 8, 10] println("array14 : ${array14.contentToString()}") // => array14 : [10, 8, 7, 5, 3, 1] }
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
r_valid 신호의 역활
항상 FPGA가 어떻게 하드웨어 가속에 도움이 될까 궁금 했는데 정말 피가 되고 살이 되는 귀중한 강의 였습니다. 코드작성에 r_valid 신호는 왜 쓰인 건가요? 그냥 인풋에 같이 동기화 되서 작동하는 그냥 잉여의 FF 체인 처럼 보이는데, 이름이 valid 인것 보면 중요한 검증 로직인 것 같기고 하구요. 현업에서도 이런식으로 많이 쓰이나요? 좋은 강의 항상 감사합니다.
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
강의자료 이미지 사용 관련
안녕하세요! 이 강의를 보면서 도커와 쿠버네티스를 공부하고 있습니다. 제가 velog를 만들면서, 강의 내용을 정리를 하려고 합니다. 그런데 도커 라이프사이클이라던지 이런 이미지가 필요한 부분들이 있는데요, 강사님의 PPT에서 이미지를 발췌해서 사용해도 될 지 궁금해 문의 드립니다. 살펴 보시고 답변 부탁드리겠습니다. 감사합니다!
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
ObjectId is not a function
별도 선언 없이 ObjectId로 조회를 하려고 하는데 계속 에러가 납니다.. 혹시 다른 문제가 있는 걸까요?
-
미해결머신러닝 엔지니어 실무
후반부 강의자료 부탁드립니다.
수강평 남겼고, 유익한 강의 잘 듣고 있습니다! 후반부 강의 공유 부탁드립니다 :D jjae0214@naver.com
-
미해결초보를 위한 도커 안내서
docker commit에 대해서 궁금한 점이 있습니다
안녕하세요 실행 중인 도커 컨테이너에 대해서 도커 커밋을하려고 하는데, 실행중인 컨테이너의 똑같은 이미지 이름:태그로 해도 실행 중인 컨테이너에 문제가 되지 않나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
오류가발생했는데 도와주세요
실전예제1 - 요구사항 분석과 기본 매핑 강의입니다. 문제가 무엇인지 찾을려고 해도 힘드네요.. 답변 부탁드립니다.ㅜㅜ
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
프로그래스바에 애니메이션을 추가하고 싶어요!
안녕하세요! 강의 너무너무 잘 듣고 있습니다! 한가지 궁금한 점이 있는데, 프로그레스 바에 점점 차오르는 애니메이션을 추가하고 싶어서 코드를 따로 작성을 했는데 첫번째 질문에서 프로그레스바 애니메이션이 적용은 되는데 두번째 질문부터는 적용이 안되어서 어떻게 하면 될 지 궁금해서 질문 남깁니다..! .status { height: 20px; width: 80%; background-color: #F8EFFB; border-radius: 20px; justify-content: flex-start; display: flex; } .statusbar { height: 100%; border-radius: 20px; /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ebe9f9+0,d8d0ef+50,cec7ec+51,c1bfea+100;Purple+3D+%231 */ background: #ebe9f9; /* Old browsers */ background: -moz-linear-gradient(top, #ebe9f9 0%, #d8d0ef 50%, #cec7ec 51%, #c1bfea 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #ebe9f9 0%, #d8d0ef 50%, #cec7ec 51%, #c1bfea 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #ebe9f9 0%, #d8d0ef 50%, #cec7ec 51%, #c1bfea 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebe9f9', endColorstr='#c1bfea', GradientType=0); /* IE6-9 */ animation: load 1s normal forwards; }
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
app crashed - waiting for file changes before starting 오류에 대해서
강의를 듣다가 해당 에러가 나시는 분들을 위해 app.use("/", express.static(__dirname, "public-test")); 이 부분에서 계속 오류가 나는 현상을 보실 수 있으실 겁니다. 일단 해당 코드를 app.use("/", express.static(__dirname + "public-test")); 라고 변경해주시면 동작 하실겁니다. ,(쉼표)를 +(더하기)기호로 변경 해주시기 바랍니다. 저도 왜 안되는지 계속 의문점이 들다가 express 공식문서를 찾아봤습니다. https://expressjs.com/ko/starter/static-files.html 해당 파일 가장 하단에 app.use('/static', express.static(__dirname + '/public')); 해당하는 코드가 있었고 해당 코드를 통해서 에러를 해결할 수 있었습니다.
-
미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
class_loss에 대해서 질문 있습니다.
loss.py에서 class loss를 구하는 과정에 label값으로 사용되는 P에 tf.one_hot 이 적용되는데, 그렇다면 prediction값으로 사용되는 pred_P 는 class에 대한 probability이기 때문에 (pred_P[:, :, 0]+ pred_P[:, :, 1]) == 1이 만족해야 하지 않나요? 아니면 probability가 아니여도 괜찮은건가요? 코드에서 사용된 pred_P는 class에 대한 probability가 아닌 것 같아 질문 드립니다. 그리고 one-hot은 단일 label에 적용되는 것이 아닌, 전체 label에 적용해야 하는데, 인자로 사용된 label[4]은 단일 label값만 가져오는 것 같습니다. 만일 코드를 단일 class에 대한 detection이 아닌, 여러 class에 대한 detection으로 변경한다면 tf.one_hot의 전달인자가 label[4]이 아닌, label number list가 들어가야 된다구 생각하는데... 제가 이해한게 맞을까요?