묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 관련한 equals()오버라이딩, 제가 이해한 것이 맞나요?
덕분에 스프링, JPA 말고도 자바 전반에 걸쳐서 정말 많은 걸 재밌게 배우고 있어서 감사드립니다. 공부를 해도 의문이 해소되지 않는 부분이 있고, 제가 이해하는 것이 맞는지 확신이 안 가는 것들이 있어 질문드립니다. 1. 왜 2:23초 정도의 equals() 오버라이딩에서, 클래스 비교를 instance of가 아니라 !=로 하였는지 프록시로 생성된 객체는 원본 클래스를 상속한, 생성된 클래스에 속하기에 equals 오버라이딩 할 때, ==이나 !=를 이용한다면 적절한 구현이 이루어질 수 없지 않나요? 1) 기본적으로 instance of를 써야 프록시로 생성된 객체가 원본 클래스와 적절하게 동등성 비교가 가능하다고 알고 있었습니다. 2) 한편, 실전예제에서 instance of를 사용하지 않은 것이 값 타입이라서 그런것이 아닌가 추측했습니다. 왜냐면 값 타입은 식별자를 갖지 않기 때문에 getReference() 메서드로 프록시를 가질 일 자체가 없어서 위의 문제가 발생하지 않으리라는게 제 추측이었습니다. 이와 관련해서 의문이 들었던 부분이: 2. 이전 강의(값 타입 컬렉션)에서 값 타입 컬렉션에 대해 값 타입 컬렉션을 매핑하는 테이블은 모든 컬럼을 묶어서 기본 키를 구성해야함: null 입력X, 중복 저장X 이라고 정리했었는데, 그렇다면 값 타입 컬렉션의 경우 PK가 존재하는 것인가요? 또, 그걸 통해서 find나 getReference가 가능한 건가요? 별개로, 값 타입이 불변 타입으로 사용되기에 equals 오버라이딩이 필요하다는 점은 이해했습니다. 마지막으로 3. getter를 사용해서 equals나 hashCode 메서드를 구현하는 것이 프록시 문제를 피해갈 수 있다는 것이 이해가 가지 않습니다. 오히려 저는 getter 사용이 아니라 클래스 판별 부분을 ==로 하지 않고 instance of로 하는 것이 더 맞다고 생각했습니다. 그 이유는 1) 제가 보기에, 위에서 언급했듯이, 프록시가 비교에서 문제가 발생하는 부분은, 프록시로 얻은 객체는 원본 객체와는 다른 클래스(JPA에 의해 생성된, 원본 클래스를 extends 하는 클래스)라는 점이기에 그렇습니다. 2) getter 사용이 아니라 instance of 사용이 프록시와 연관이 있다고 IntelliJ가 안내문으로말해주는 것 같아보였습니다. 단축키로 equals와 hashCode 메서드를 생성하려고 하면 다음과 같은 안내문이 나왔었는데요: generate equals() and hashCode() Accept subclasses as parameter to equals() method While generally incompliant to Object.equals() specification accepting subclasses might be nessesary for generated method to work correctly with frameworks, which generate Proxy subclasses like Hibernate. 생성된 메서드를, 하이버네이트처럼 프록시 서브클래스들을 만드는 프레임워크들과 호환시키고 싶으시다면, 일반적인 Object.equals() 규격과 다르게, 서브클래스들을 포함시키는 것이 필요할 수 있습니다. Use getters during code generation 해당 클래스에 getter 만들지 않으면 당연히 위 옵션을 체크하더라도 getter 메서드 사용하지 않고 구현된다. 제가 잘못 번역한 것인지는 모르겠습니다만 위의 안내문은 제가 위에서 생각했던 것처럼 서브클래스를 포함시키는 것 (!=으로 동등 클래스만 포함시키는 것이 아니라 instance of로 서브클래스까지 포함시키는 것) 이 하이버네이트 등의 프록시 서브클래스 문제를 해결해준다고 말하는 것 같았기 때문입니다. 공부가 얕아서 질문이 많았습니다. 하이버네이트에서 실제 프록시를 생성하거나 할 때 무언가 제가 모르는 부분이 있는 것은 아닌가 해서 하이버네이트 라이브러리에서 em을 extends 하는 Session이나 SessionImpl을 뒤져 보기도 했는데, 도통 답을 찾기가 어렵네요. 도움이 필요합니다..
-
해결됨실전! 스프링 데이터 JPA
Specification 을 활용하는 RSQL 파서 + Querydsl 의 조합은 어떻게 생각하실지 궁금합니다.
안녕하세요 이제 추워지는데 건강조심하셔요!뭔가 떠오르는게 있을때 강사님의 의견이 가장 궁금한것 같아 또 남기게 되었습니다 RESTful API 구현방식 에서, 서버측에 검색조건에 대한 쿼리로직는 최소화 하도록, 그리고, Client 에서 검색조건 을 제공하도록 조건절이 문법화 된 RSQL 이란것을 알게되었는데요... 이 RSQL 을 파싱하는 rsql-parser 를 통해 Querydsl 의 BooleanExpression 로 변환해주는 기능에 Spring-boot Starter 의존성으로 제공해주는 라이브러리를 하나 발견했습니다. perplexhub/rsql-jpa-specification: Java Library to Translate RSQL into Spring Data JPA Specification and QueryDSL Predicate (github.com) (링크 아래쪽에 Querydsl 설명이 있어요) 저의 눈엔 꿀이 가득한 꿀통을 찾은 느낌같은 느낌인데요.. 서브프로젝트로 진행보려 생각중인데, 실무에서 꺼려지는 기술은, 좋아보여도 따라가다 하얗게 타버리는 하루살이가 될 수 있기때문에..적용하려는 폼만 잡고있습니다^^; 슬쩍 보셨을때 어떤 기분이 드시는지 강사님의 견해가 궁금합니다(JPA Specification 이나 저놈이나 그놈이 그놈일까요?..ㅎㅎ) 읽어주셔서 감사해요
-
미해결리눅스 IPC 프로그래밍 - 이론과 실습
리눅스는 디버깅이 없나요?
안녕하세요 vs에서는 코드 입력후 디버깅이있어 어느거부터 시작되고 변수에 뭐가 들어가있는지 확인이 가능한데 혹시 리눅스는 디버깅이라는게 따로 없나요? vs에서는 리눅스 라이브러리가 있던데 혹시 vs에서 리눅스를 깔면 안되나요?
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
요소의 질문이 하나만 나옵니다.
제 나름대로 안에 내용물과 이름만 변환해서 학습중입니다. 테스트 시작하기 버튼을 누르면 a.보트 b.우주선 이렇게 버튼 두개가 나와야하는데 지금은 b 만 나오는 상황입니다. 제가 데이터를 정리 할 때에 묶음으로 정리하지 않아서일까요? 고견 부탁드립니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
lxml 오류
pip install lxml 시행하였는데 아래와 같은 오류가 발생하였습니다. 어떻게 해야하나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if를 중첩으로 사용
function solution(arr,m){ let answer=0; let n=arr.length; arr = arr.sort((a,b)=>(a[0]+a[1])-(b[0]+b[1])); for(let i=0; i<n; i++){ let money = m-(arr[i][0]/2)+(arr[i][1]); let cnt = 1; for(let j=0; j<n; j++){ let tot = arr[j][0]+arr[j][1]; if(arr[i]!==arr[j]){ if(money - tot < 0){ break; } if(money - tot >= 0){ money-=tot; cnt++; } } } answer=Math.max(answer, cnt); } return answer; } let arr=[ [6,6], [2,2], [4,3], [4,5], [10,3] ] console.log(solution(arr,28)); 이렇게 풀었는데 if(i !== j) 안에 넣는 방식보다는 &&연산자를 사용하는 방식이 더 좋을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
폭팔할꺼같다
항상 자바스크립트 리액트 보다도 git이 젤 젤 쩰 뭐같네요 후..
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
선생님, 질문이 있습니다.
선생님, 강의 잘 보고 있습니다. 몇 가지 질문을 드리고자합니다. 1) 이건 좀 간단한 확인일 수 있는데, 강의 5:58초 슬라이드에서 결국에는 x1,x2이런게 어떤 단항, 혹은 수치가 아니라 선형대수에서 말하는 하나의 열벡터라고 봐야되는 것이죠? 그렇게 되면 xn만큼 가중치 행벡터가 존재하게 되는 것인데 이 계산을 하려면 행렬이 맞아야 하니까 가중치 행벡터의 WT를 내적해야 되는 것이죠? 그렇게해서 dot 연산에 의해 저 weighted Sum을 구하는 것이라고 봐도 무방한가요?2) 특정 N[L]의 신경망이 있다고 하였을 때 x1 n[1]1 x2 n[1]2 n[2]1 ..... x3 n[1]3 n[2]2 x4 n[1]4 2-1) n[1]1은 x1~x4까지 저 퍼셉트론 과정에서의 연산을 하는 것이고, 이 연산의 결과는 또 다시 열벡터가 되는 것인가요? 2-2) 그리고 각각 저 1층에서 모든 뉴런에 대하여 똑같은 연산을 전부 한다고 봐도 괜찮은 것이죠? 제가 요새 갑자기 받아들이는 정보량이 너무 많아져서ㅜ.ㅜ 개념 정리가 필요할 것 같아서 질문드렸습니다. 감사합니다 선생님!
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
2:12 질문입니다.
본 강의 2분 12초에서 delivery_time을 구하기 위해 orders.loc[:, 'delivery_time'] = pd.to_datetime(orders.loc[:, 'order_delivered_customer_date']) - pd.to_datetime(orders.loc[:, 'order_purchase_timestamp'])로 -(빼기) 연산을 하는데 datetime64 dtype끼리 연산을 할때는 to_datetime()에서 format을 지정해주지 않아도 되는건가요?
-
미해결유니티 방치형 게임 만들기
마이너스버프
버프 종료후에도 att 값이 원래대로 돌아오지 않습니다. 제가 작성해도 그렇고 위의 이미지처럼 작성자님의 프로젝트도 마찮가지였습니다. return origin - temp; 제가 봐도 코드상으로는 문제가 없어보이는데 확인 부탁드립니다. 그리고 if(color == Color.red) tmp_text.text = Player.GetComponent<PlayerControl>().att.ToAttackString(); else tmp_text.text = "Cretical"+Player.GetComponent<PlayerControl>().att.ToAttackString(); 데미지팝업에서는 크리나, 평타나 att변수가 적용되서 크리티컬데미지는 적용되지만 텍스트에는 att만 표시됩니다. creatt = att*creran;으로 하고 creatt.ToAttack....이런식으로 변경해서 처리했습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
오답질문
어떤 이유로 오답이 출력되는지 잘모르겠습니다..ㅜ public int solution(int n, int[][] arr) { int answer = 0; int a[] = {-1, 0, 1, 0}; int b[] = {0, 1, 0, -1}; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { for(int k=0; k<4; k++) { int nx = i + a[k]; int ny = j + b[k]; if(nx>=0 && nx<n && ny>=0 && ny<n && arr[i][j]>arr[nx][ny]) { answer++; } else { continue; } } } } return answer; }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
UserException, DefaultHandlerExceptionResolver
안녕하세요 복습 겸 다시 강의를 듣고있는데 다시 들으니 새로운 질문 거리가 생겨서 질문드립니다. 1) 17:35분에 RuntimeException은 UserException이 해결을 할수가 없어서 @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler public ErrorResult exHandler(Exception e) { log.error("[exceptionHandler] ex", e); return new ErrorResult("EX", "내부 오류"); } 이 실행 된다고 하셨는데 UserException 은 RuntimeException을 상속 하고있습니다. 그래도 UserException은 RuntimeException을 해결을 할수가 없는건가요 ? 2) DefaultHandlerExceptionResolver은 errormessage를 따로 설정을 할순없는건가요 ?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
ThreadPoolExecutor의 max_worekers에 관한 질문입니다
ThreadPoolExecutor와 ProcessPoolExecutor의 인자로 둘 다 'max_workers=' 받을 수 있다고 하는데요 인터넷에서 예제들을 찾아보니 with concurrent.futures.ProcessPoolExecutor(3) as exe: exe.map(download_image, img_urls) 이런 식으로 max_workers가 없이 숫자만 사용된 형태들도 많이 보였습니다. 이런 경우에도 max_workers=3 과 같은 의미라고 봐도 되나요??
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
선생님, 질문이 있습니다.
epoch 횟수를 증가시키면 증가시킬수록 당연히 최적의 파라미터 벡터를 찾아낼 수 있을테지만 그에 따라 과적합의 문제도 발생할 수 있잖아요? 그래서 만일 오차율이 이전 epoch보다 더 커지는 시점이 오게 되면 학습을 중지시키는 것이구요, 이게 earlystopping일텐데 보통 이런 경우에서만 놓고보면 iter_epoch가 증가함에 따라 과적합 / 최적 파라미터를 찾는 과정?이 반비례의 양상을 띄게 되잖아요? 그런데 earlystopping의 요지는 어디까지나 경험적으로 이전의 오차값과의 비교를 통해 과적합이 될 것 같으면 학습을 중지시킨다는 것인데,만일 N차원의 그래프에서는 이 '학습의 중지'가 단지 국소적인 부분일 수도 있는 가능성이 있잖아요? 다시 말해1전체 양상의 일부만을 놓고봤을 때에는 일시적으로 오차율이 증가했을 수도 있는데, 이런 문제는 어떻게 처리를 하나요? 다시 말해2 인간은 전체 그래프를 볼 수 있어서 더욱 알맞는 파라미터 벡터를 찾아낼 수도 있을 가능성을 알고 있을 텐데도 불구하고, 모델은 early stopping에 의거하면 단지 일부만의 오차 증가일 뿐인데, 그 오차 증가를 캐치하는 바람에(지금까지의 학습 경험에 의거) 적절하지 못한 시점에서 학습을 중단하게 될 수도 있을텐데, 이 문제는 어떻게 처리할 수 있는지 궁금합니다.
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
영상에서의 정답과 수업자료 정답이 다른데 뭐가 맞는 건가요 ?
product의 길이가 1개 이상이라고 하면 > 0 이라고 해야하나요아님 > 1이라고 해야하나요 ?수학으로 생각하면 전자가 맞는 거 같은데 영상에선 후자가 정답이라고 하셔서요
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
선생님, 질문이 있습니다.
만약에 feature vector가 N개가 존재하게 되면 그에 상응하는 회귀계수의 vector의 shape은 (1,N)이 되어야 하는 것으로 이해를 해도 되나요?순전파를 할 때에는 그러면 xn은 하나의 벡터 w1*x1 w2*x2......wm*xm을 선형대수 연산으로 도출하는 것이라고 이해해도 될는지 여쭙고 싶습니다. 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
9:07 질문
안녕하세요 테스트 케이스 관련해 질문있습니다. findByName() { ... } 작성후 돌리면 계속 에러가 나는데 왜 그런지 알고싶습니다.
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
image_size 변환에서 질문있습니다.
마지막 파트에서 로직들을 함수화 해서 쓸 때 IMAGE_SIZE = 32 ... def do_cifar10_train_evaluation(image_size=IMAGE_SIZE, model_name='vgg16'): 과 같이 정의 하고 history, evaluation_result = do_cifar10_train_evaluation(image_size=64, model_name='xception')으로 사용하는데 위에 IMAGE_SIZE를 바꿔야 input_size가 바뀌는거 같은데 저만 그러나요...? 아니면 강의때 설명 해 주셨는데 제가 못들은걸까요...? 아래는 vgg16으로 IMAGE_SIZE를 직접 바꿨을 때랑 안바꿨을 때 summary 초반 부분입니다. IMAGE_SIZE = 32... Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) [(None, 32, 32, 3)] 0 _________________________________________________________________ block1_conv1 (Conv2D) (None, 32, 32, 64) 1792 _________________________________________________________________ block1_conv2 (Conv2D) (None, 32, 32, 64) 36928 _________________________________________________________________IMAGE_SIZE = 64... Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) [(None, 64, 64, 3)] 0 _________________________________________________________________ block1_conv1 (Conv2D) (None, 64, 64, 64) 1792 _________________________________________________________________ block1_conv2 (Conv2D) (None, 64, 64, 64) 36928
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 브랜치 관련 질문입니다.
git clone으로 초대 받으신 git 비공개 리포지토리 주소 다시 실행해 보셔야 할 것 같아요 :) 라고 선생님께서 말씀을 해주셨는데요 git 비공개 리포지토리 주소를 실행하는 방법이 뭔가요? 저는 그냥 진짜 몰라서 강의에 나온대로만 하니까 안돼서 답답해서 여쭤봅니다. ㅠㅠ
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
에러메시지를 받았는데, 구글링해도 해결법을 못찾아서 질문 드려요. 'ParseError at [row,col]:[2,5] Message: Invalid byte 3 of 4-byte UTF-8 sequence.'
ParseError at [row,col]:[2,5] Message: Invalid byte 3 of 4-byte UTF-8 sequence.