안녕하세요 영한님! 영속성 전이 + 고아객체에 대해서 질문이 있습니다.! 강의 20분12초 쯤부터 설명하시는 내용을 들어보면 CascadeType.ALL + orphanRemovel = true를 설정하게 되면 부모 엔티티를 통해서 자식의 생명주기를 관리 할 수 있다고 말씀하셨는데 그러면 아래와 같은 코드가 있을때 public Parent findParent(Long id) { return em.find(Parent.class, id); } public void deleteParent(String name) { em.createQuery("delete from Parent p" + " where p.name = :name") .setParameter("name", name) .executeUpdate(); } @Transactional public void delete() { Parent parent = parentRepository.findParent(1L); parentRepository.deleteParent(parent.getName()); } 이런식으로 코드를 작성하면 자식도 함께 삭제가 안되는게 맞는 걸까요? 위와 같이 진행하면 무결성 참조 에러가 발생하여서 질문 남깁니다..! 😭 Referential integrity constraint violation 감사합니다. 장세웅 드림.
안녕하세요 테스트 편의를 위해서 127.0.0.1 주소를 localhost가 아니라 my-kafka로 설정을 했었습니다. 주키퍼,카프카를 실행하기 위해 콘솔에서 bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-start.sh config/server.properties 로 켜는데요 zookeeper.properties, server.properties 항목에 존재하는 localhost주소는 안바꿔줘도 에러가 안나는지 궁금합니다!
안녕하세요 조현영님. 인터셉터 관련해서 궁금한게 있어 질문드립니다. 아래는 제가 만들어 놓은 인터셉터입니다. intercept(context: ArgumentsHost, next: CallHandler<any>): Observable<any> { // controller 도달 전 const req = context.switchToHttp().getRequest(); const res = context.switchToHttp().getResponse(); console.log(`Receive request from ${req.method} ${req.originalUrl}`); const now = Date.now(); return next.handle().pipe( map((data: JSON<null>) => { // controller 도달 후 console.log( `Send response from ${req.method} ${ req.originalUrl } :: time taken : ${Date.now() - now}ms`, ); return res.status(data.statusCode).setHeader("X-Powered-By", "").json({ success: true, ...data}); }), ); } 이전까지는 이런식으로 인터셉터를 구성해서 포스트맨으로 사용할 땐 문제없이 요청과 응답이 오고 갈수 있었습니다. 그런데 시험삼아서 브라우저에 서버 url을 입력후 get메서드를 사용하는 api를 사용해봤는데 응답은 잘 갔었지만 서버 콘솔에 cannot set headers 오류가 났습니다. 이 오류는 꽤나 익숙해서 응답이 두번 보내져서 그런가 싶어 인터셉터 응답을 아래처럼 바꿔보았습니다. intercept(context: ArgumentsHost, next: CallHandler<any>): Observable<any> { // controller 도달 전 const req = context.switchToHttp().getRequest(); const res = context.switchToHttp().getResponse(); console.log(`Receive request from ${req.method} ${req.originalUrl}`); const now = Date.now(); return next.handle().pipe( map((data: JSON<null>) => { // controller 도달 후 console.log( `Send response from ${req.method} ${ req.originalUrl } :: time taken : ${Date.now() - now}ms`, ); res.status(data.statusCode).setHeader("X-Powered-By", ""); return { success: true, ...data }; }), ); } 이상한게 get, delete 메서드를 사용하는 api는 return문을 거쳤을 때 응답이 잘 도달되었지만 post,patch등은 응답이 가고 계속 로딩중입니다. 계속 기다려도 이러한 상태여서 디버깅을 통해 문제를 해결하고자 return문에서 부터 계속 디버깅을 시도했습니다. 그리고 문제였던 아래 코드를 발견했습니다. return async (result, res) => { result = await this.responseController.transformToResult(result); !isResponseHandled && (await this.responseController.apply(result, res, httpStatusCode)); }; 위의 코드는 node_modules/@nestjs/core/router/router-execution-context.js 라는 파일의 174 ~ 177줄의 코드입니다. 아마 result 변수가 인터셉터에서 리턴된 값으로 사용되는 변수 같은데 그 아래 있는 코드 실행 이후 계속 응답이 닿지 않는 모습이었습니다. 그래서 저는 아래처럼 다시 수정해봤습니다. return async (result, res) => { result = await this.responseController.transformToResult(result); await this.responseController.apply(result, res, httpStatusCode); }; 이후에는 post, patch메서드의 응답이 잘 닿았지만 과연 이게 올바른 해결 방법인지는 잘 모르겠습니다. 만약 이 프로젝트를 git에서 pull, clone등을 할 때 node_modules는 .gitignore에 등록해놓아서 위 처럼 변경 사항을 불러올 수가 없어서 git에서 pull, clone하려면 npm i로 모듈들을 받은 후 계속 저런식으로 수정을 해야 되서 이 방법은 좀 아닌거 같지만 일단 임시방편으로 해놓은 상태입니다. 조현영님께서는 이렇게 어떤 문제가 해결이 안될때 node_modules를 건드려서 해결하신적이 있으신가요?
int *a_ptr = &a;가 변수a의 주소를 저장하는 변수라고 하셨고 실제로 a_ptr를 출력해보니 a의 주소값이 나오더라구요. 그런데 int b = &a;로 해도 똑같은 주소값이 나오던데 굳이 포인터 변수가 아니더라도 주소를 저장 할 수 있지만 포인터 변수는 일반 변수와 다르게 값을 가르킬 수 있는 것에 의의가 있는 건가요??
강의 잘듣고 있습니다. 평소 이해하기 힘든 부분 잘 설명해주셔서 감사합니다. 강의를 듣다 의문이 있어 질의드립니다. 이미지와 일반적인 속성을 이용해서 분류를 해야 하는 경우 어떤식을 적용해야 하나요? 예를들면 음식 이미지와 온도, 습도 데이터를 통해 부패여부를 알고자 한다면, 이미지를 딥러닝을 통해 1차로 분류한 후, 그 결과를 온도, 습도와 같이 머신러닝을 시켜야 하는지, 아니면 한번에 학습하는 방법이 있는지, 또는 다른 방법이 있을지 궁금하네요. 실제 프로젝트에서는 이미지와 같이 사용하는 경우가 많을거 같아 질문드립니다.
안녕하세요. 해당 수업 실습중에 실수로 테스트코드에 피라미터를 넣게되었습니다. 그래서 피라미터를 지우고 테스트가 정상적으로 통과되는 것을 확인하긴 했는데 여기서 왜 테스트코드에 피라미터를 넣으면 오류가 발생하는지가 궁금하더라구요 그래서 구글링으로 찾아봤는데 그에 대한 해답이 정확히 없더라구요 ㅠㅠ 혹시 테스트코드에 피라미터를 넣게된다면 왜 오류가 발생하는지 알 수 있을까요?? 제가 실수로 작성했던 코드와 오류 메세지입니다. 에러 코드 : org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.lang.Long arg0] in method [void xik.ShoppingMall.Service.OrderServiceImpTest.createOrder(java.lang.Long,java.lang.String,int)].
안녕하세여. 강의 잘 듣고 있습니다. 지금까진 잘 이해가 되다가 4.4 상관계수 들으면서 이해가 안되는부분이 생겨서 질문드립니다. 강의에서는 상관계수를 구할때 두 자산군의 일별 수익률로 구하셨는데, 두 자산군의 상관계수를 구할때 일별 주가로 구하면 안되는건가요? 왜 일별 수익률로 한번 가공을 거친후에 상관계수를 구하는지 헷갈립니다. 일별수익률의 상관계수와 가격 자체로 구한 상관계수가 차이가 있는것 보면, 구분해서 상관계수를 구해야 될거 같은데, 어떻게 구분을 해야 하는지 궁금합니다
좋은 강의로 실력이 자라나고 있습니다. 주말에 질문 한가지만 드리고 싶어서 여쭈어봤어요 .... 메세지 컨버터는 결국에 오브젝트의 값을 읽어주는 역할을 해서 리스폰스바디와 리퀘스트 바디에서 자동으로 변형된다는 말씀이시죠? (쉽게 말하면 통역을 한번 해준다는 의미시죠?) 또한 7분02초에서 말씀하신 V2기능이 메세지 컨버터에 담긴 코드와 같다고 이야기 해주신 거 맞나요? 메세지 바디라는 것이 결국에 HTML에서 <Body> 테그 속에 있는 메세지를 이야기 하는 것이 맞나요?
안녕하세요 강사님 프론트엔드와 퍼블리셔로 취업하기 위해 학습 준비중인 학생입니다. 강의 중 제이쿼리 설치와 scrolla 플러그인 설치는 정상적으로 되었는데 애니메이션 동작이 구현되지 않습니다. 혼자 몇시간 끙끙대다 결국 문의를 드립니다 ㅜㅜ 다른 강의 질문글에 강사님 이메일이 보여서 파일을 먼저 이메일로 전송드렸습니다. 코드 확인 후 답변주시면 감사하겠습니다.
안녕하세요 교수님 강의 잘 보고 있습니다. 다름이 아니라 해주신대로 혼자 해보았는데 계속 답이 16이 나와요 ㅠㅠ 강의랑 비교해서 다른 곳을 못찾겠는데 어디가 잘못된걸까요? ㅠㅠ import sys from tempfile import tempdir sys.stdin = open("input.txt","rt") n,m = map(int,input().split()) li = list(map(int,input().split())) lt = 1 rt = sum(li) def Count(capa): cd = 1 sum = 0 for x in li: if sum + x > capa: cd += 1 sum = x else: sum += x return cd while lt <= rt: mid = (lt + rt) // 2 if Count(mid) <= m : res = mid rt = mid -1 else: lt = mid + 1 print(mid)
안녕하세요 ! 강의 열심히 듣고 있습니다. 시큐리티가 어려워서 열심히 서칭 하다가 강사님 강의를 듣게 됬습니다. 지금 회사에서 스프링 시큐리티 구현하고 있는데요. 회사에서는 Mybatis 사용해서 구현하라고 하는데 강의를 완강하고 해볼려고 합니다. jpa 부분을 mybatis로 바꿔야 할거 같은데 바꾸는게 어떤지 ... 강사님의 의견을 들어보고 싶습니다.!