안녕하세요. '패스워드 수정' 강의와 해당 강의에 등록된 질문( https://www.inflearn.com/questions/302863 )을 통해 회원의 패스워드 수정 시 '현재 패스워드'를 추가로 인증시키도록 코드를 변경하던 중 옳바른 개발 방법(?)에 대해 질문드립니다. 우선 패스워드 변경 View에서 '현재 패스워드'를 입력할 수 있도록 'input[type="password"]' 태그를 추가하고, PasswordForm(DTO 역할) 클래스에 'oldPassword'라는 프로퍼티를 추가했습니다. 이후 제가 하고자 하는 것은 패스워드 변경 유효성 검사를 하기 위해 생성했었던 PasswordFormValidator 클래스에서 View에서 입력받은 '현재 패스워드 값' 과 'DB에 저장된 회원의 현재 패스워드 값' 을 비교하여 일치하지 않는다면 Custom한 Error 메시지를 View로 전달해주고 싶은 상황입니다. 여기서 고민되는 것은 '패스워드 변경 Form' 요청 핸들러 메소드에서는 현재 인증된 회원 정보를 Model에 담아주고 있기 때문에 View쪽에 'input[type="hidden"]' 태그를 추가한 뒤 회원의 이메일, 닉네임 값을 설정하고 패스워드 변경 요청 시 PasswordForm 클래스에 그 값이 바인딩 될 수 있도록 아래와 같이 이메일, 닉네임 프로퍼티를 추가하여 PasswordFormValidator 클래스에서 DB에 저장된 회원의 현재 패스워드 값을 비교해서 틀린 경우 Error를 생성해 줄 것인가 아니면 이를 Validator가 아닌 '패스워드 변경 비즈니스 로직' 에서 할 것인가입니다. 만약, 비즈니스 로직에서 현재 비밀번호에 대한 유효성 검증을 진행하는 경우 PasswordForm 클래스에 굳이 필요 없는 email, nickname 프로퍼티를 추가하지 않아도 되는데요. 이 두가지 방법 중 어떤 경우가 좀 더 효율적인지, 제가 생각하지 못한 방법이 또 있는지(비슷한 상황들에 대한 노하우) 조언 부탁드리겠습니다. 미리 답변 감사합니다. 아래는 PasswordFormValidator을 통해 현재 패스워드 유효성 검사를 진행할 경우에 대한 예시 코드입니다.
원 핫 인코딩을 한 후 LinearRegression, Lasso,Ridge 등은 성능이 더 좋아졌지만 트리 계열 알고리즘 XGBoost,LightGBM, RandomForest 등을 원 핫 인코딩을 하기전과 후를 돌려보니 원 핫 인코딩을 하기 전 성능보다 후가 더 떨어지더군요 책에서 말씀하신 대로 datetime과 관련된 칼럼들은 개별 숫자값의 크기로 인식되서는 안되므로 원핫인코딩을 적용한 후 더 성능이 좋아야 하는거 아닌가요?
app.use( ['/docs', '/docs-json'], expressBasicAuth({ challenge: true, users: { [process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD, } }), ); 해당 코드 작성후 실행하면 에러가 뜹니다. expressBasicAuth({ ^ TypeError: (0 , express_basic_auth_1.default) is not a function at bootstrap (/Users/buzz/Documents/Git/ToyProject/nestjs/src/main.ts:12:23) at processTicksAndRejections (node:internal/process/task_queues:96:5) 확인 부탁드립니다!
안녕하세요 강사님 개인적으로 질문이 있어 문의드립니다. 6강 행렬식풀이 강의에서 nXn 행렬 A가 역행렬이 존재할 때 A와 I_n이 row equivalent하다. (서로 동치)다고 말씀주셨는데 그러한 이유가 무엇인가요?? 강의에서는 직관적으로 설명해주셨는데, det(A)!=0 인 이유와 연관되어서 그런가요??
3:55 부분 말씀해주신대로, .zprofile 에 pyenv 환경 변수를 넣었으나, 터미널 실행시 pyenv 라는 명령어를 찾을수 없다고 에러가 떠서 python 명령을 불러오지 못하는 상황이 되었습니다. 이에따라, 관련해서 찾아보니, 맥의 최신 버전의 맥들의 대부분 기본 쉘인 zsh 기준으로는 zshrc 에 넣어줘야 했고, 값도 일부 달라 해당 값을 넣어 정상 동작함을 확인하였습니다. 출처 : https://github.com/pyenv/pyenv
안녕하세요 강의 잘 듣고 있습니다. V2 CreateMemberRequest DTO 객체를 사용하여 요청을 받을 때 유효성 체크가 동작하지 않는 것 같아서 문의드립니다. @Data static class CreateMemberRequest { @NotEmpty private String name; } @NotEmpty를 추가해도 API 호출 시 name 을 입력하지 않아도 적재가 되는데 왜 체크가 되지 않는지 궁금합니다!
강의 내용 중 변경 가능한 컬렉션들의 구현체에 대해서는 말씀을 해주셨었는데 그럼 불변 컬렉션의 구현체는 무엇인거지? 라는 궁금증이 생겼습니다. Set의 구현체 가변 Set : LinkedHashSet 불변 Set : LinkedHashSet Map의 구현체 가변 Map : LinkedHashMap 불변 Map : LinkedHashMap 이렇게 불변과 가변 구현체 둘 다 같은 것으로 유추를 했는데 그 근거가 아래와 같습니다. 이처럼 불변 컬렉션 생성되는 과정을 따라가보니 LinkedHashSet 인 것을 보고 유추를 해보았습니다. 이것이 맞는지가 우선 첫 번째로 궁금합니다. 그리고 toSet()의 중간에 1 -> setOf(this[0]) 이 코드도 무슨 의미인지가 알고 싶습니다!.. 두번째로 HashSet이나 HashMap관련해서 질문이 있습니다. hashSetOf, hashMapOf로 만든 컬렉션들은 전부 가변컬렉션인지 hashSet이나 hashMap은 자주 사용을 하지 않아서 따로 설명을 안해주신 것인지 아니면 시간 제약상 일부로 Linked만 말씀해주신 것인지 알고 싶습니다!
package 배열1_2차원; import java.util.Scanner; public class 격자판최대합9 { static int solution(int n , int [][] arr ) { int answer =0; int [] aArr = new int [n]; int [] bArr = new int [n]; int aMax = 0; // 가로 int bMax = 0; // 세로 int c = 0; int d = 0; //가로합 -> aArr 배열에 추가 for (int i = 0; i < n; i ++ ) { for (int j = 0; j < n; j++) { aArr[i] += arr[i][j]; } } for (int i = 0; i < aArr.length; i++) { if(aMax < aArr[i]) { aMax = aArr[i]; } } //세로합 -> bArr 배열에 추가 for (int i = 0; i < n; i ++ ) { for (int j = 0; j < n; j++) { bArr[i] += arr[j][i]; } } for (int i = 0; i < bArr.length; i++) { if(bMax < bArr[i]) { bMax = bArr[i]; } } // 우하향 대각선 for (int i = 0; i < n; i++) { for (int j = i; j <= i; j++) { c += arr[i][j]; } } // 좌하향 대각선 for (int i = n-1; i >= 0; i--) { for (int j = i; j <= i; j++) { d += arr[i][j]; } } int [] maxArr = new int[] {aMax , bMax , c, d}; for (int i = 0; i < maxArr.length; i++) { if(answer < maxArr[i]) { answer = maxArr[i]; } } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int [][] arr = new int [n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(solution(n,arr)); } }
하나의 쓰레드가 여러 개의 JobQueue를 점유하는 현상이 안좋은 이유는 알겠습니다. 다른 쓰레드가 다른 JobQueue의 Job들을 처리하지 못하게 되니까요. 그런데 모든 쓰레드가 모든 일감을 처리할 수 있는 만능 일꾼이 된 상황에서, 하나의 쓰레드가 하나의 JobQueue를 오래동안 잡고있는 현상이 왜 안좋은지는 잘 이해가 안갑니다. 어차피 하나의 쓰레드가 붙잡고 해야할 일이 아닌가요? 동시에 여러 쓰레드가 처리 가능한 것도 아닌 것 같구요... 예를 들어, 쓰레드 A, B, C가 있다고 해봅시다. 쓰레드 A가 JobQueue 'ㄱ'를 점유하고 계속 작업을 하고 있습니다. 쓰레드 B와 C는 'ㄱ'과 관련된 일은 모두 A에게 몰아주고 나머지 작업들을 처리하고 있습니다. 그런데 A의 'ㄱ'점유가 너무 길어져서 'ㄱ'의 점유를 B에게 넘겨주었습니다. 그리고 A는 B와 C가 하던 것 처럼 나머지 작업들을 처리하게 되었습니다. 그럼 결국 'ㄱ'의 점유가 A에서 B로 넘어갔을 뿐 달라진 것이 없지 않나요? 오히려 쓸 데 없는 스위칭 비용만 발생한 것이 아닌가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 SpringConfig.java에서 SpringConfig의 생성자의 매개변수에서 DataSource dataSource를 불러오는 과정에서 "자동 주입을 할 수 없습니다. 'DataSource' 타입의 bean을 찾을 수 없습니다." 이라는 에러가 발생합니다. 다른분께서 질문을 올려두었지만 명확한 답변이 달리지 않아 다시 질문을 올립니다.
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
저는 42번 문제를 아래 코드처럼 작성했는데 이렇게 작성해도 괜찮을까요? 데이터에 있는 숫자 3을 이용해서 txt파일을 찾는 코드입니다. filelist = ['exercise01.docx', 'exercise02.csv', 'exercise03.txt', 'exercise04.hwp'] for str_txt in filelist: if str_txt[9] == '3': print(str_txt)
*************************** APPLICATION FAILED TO START *************************** Description: Failed to bind properties under 'spring.main.allow-bean-definition-overriding' to boolean: Property: spring.main.allow-bean-definition-overriding Value: ture Origin: class path resource [application.properties] - 1:46 Reason: failed to convert java.lang.String to boolean (caused by java.lang.IllegalArgumentException: Invalid boolean value 'ture') Action: Update your application's configuration 이와 같이 에러가 났습니다. 커뮤니티에서 찾아보다가 구글 드라이브로 코드를 공유하면 좋다해서 아래 링크를 첨부하겠습니다. 감사합니다. https://drive.google.com/drive/folders/1gZ21z6k7AEdZJMZyrsCIu-JQauGaeUT9?usp=sharing