안녕하세요. 정말 재밌게 수강중입니다. 다름이 아니라 데이터 검증 책임에 대해서 궁금한게 있습니다. 저는 사용자에 의해 넘겨받은 데이터를 Controller 에서는 값의 존재여부와 타입 정도만 확인하고 실제로 비즈니스 레이어에서 사용될 때 검증하는 것을 선호하는데, 강의에서는 Request(DTO) 객체에서 toContent() 함수를 호출하면서 검증하더라구요. 특별히 Request 에 위치시킨 이유가 있을까요? 관점이 궁금합니다. fun toContent(): QuestionContent { if (title.isEmpty()) throw CoreException(ErrorType.INVALID_REQUEST) if (title.length > 100) throw CoreException(ErrorType.INVALID_REQUEST) if (content.isEmpty()) throw CoreException(ErrorType.INVALID_REQUEST) return QuestionContent(title = title, content = content,) } 해당 로직이 아래 방식으로 들어가는게 책임이 맞지 않을까? 라는 생각입니다. data class QuestionContent( val title: String, val content: String, ) { init { if (title.isEmpty()) throw CoreException(ErrorType.INVALID_REQUEST) if (title.length > 100) throw CoreException(ErrorType.INVALID_REQUEST) if (content.isEmpty()) throw CoreException(ErrorType.INVALID_REQUEST) } }
professor_bcnf, enrollment_bcnf로 테이블을 분리하는 과정에서 질문이 있습니다. 이전에 이름과 같은 자연키는 기본키로 두면 안된다고 들었는데 현재는 professor_bcnf에서 professor_name이 기본키로 있습니다. 이런 경우에는 문제가 딱히 생기지 않나요?
ManyToOne and OneToMany 의 12:38 스크립트가 반대로 작성 (이에 따라 번역도 반대로) 되어있는 것 같습니다. Hibernate is not going to set the foreign key when executing the insert statement. -> Hibernate is going to set the foreign key when executing the insert statement. nullable false 설정하면 삽입 시 외래키도 같이 설정. 그럼에도 이후 update 쿼리가 날아간다. 라는 것 같은데 반대로 적혀있네요. 스크립트 정정에서 신청할랬는데 정정 버튼이 안눌려서 글 남깁니다.
최고의 강의 너무나 감사합니다. 설치 시 에러가 있어 문의드립니다. !cd /content/automl/efficientdet; pip install -r requirements.txt note: This error originates from a subprocess, and is likely not a problem with pip. ------------------------------ import inference # 강의영상에는 from keras import anchors 이지만 efficientdet 패키지의 keras 모듈이 tf2 로 변경됨. from tf2 import efficientdet_keras model = efficientdet_keras.EfficientDetModel(config=config) model.build((None, None, None, 3)) print('#### checkpoint name:', tf.train.latest_checkpoint(INFER_CFG.model_dir)) model.load_weights(tf.train.latest_checkpoint(INFER_CFG.model_dir)) model.summary() ValueError: File format not supported: filepath=/content/efficientdet-d0/model. Keras 3 only supports V3 `.keras` and `.weights.h5` files, or legacy V1/V2 `.h5` files.
현재 71~87 페이지 공부 중인데... 앞 부분은 어찌저찌 완성시켰지만 2장 들어오면서 부터 정확히 어느 위치에 어떻게 넣어야 할지 감도 안오네요.. 결국 AI 도움을 받아서 쓰긴 썼는데... (결과 화면은 출력됐습니다. 근데 책 코드와 조금씩 다르네요.) 코드 입력하는 부분이 너무 헷갈리는데 중간 과정에 대한 소스가 따로 있을까요? 책에 나온 깃허브에는 완성본만 나와서 이게 맞는지 모르겠네요. 현재 2장 진행하면서 2.3까지 책의 내용대로 진행해봤는데 너무 진행이 안되서 글 남깁니다.
현재 71~87 페이지 공부 중인데... 정확히 어느 위치에 어떻게 넣어야 할지 감도 안오네요. 결국 AI 도움을 받아서 쓰긴 썼는데... (결과 화면은 봄.. 근데 책 코드와 조금씩 다르네요.) 코드 입력하는 부분이 너무 헷갈리는데 중간 과정에 대한 소스가 따로 있을까요? 책에 나온 깃허브에는 완성본만 나와서 이게 맞는지 모르겠네요. 현재 2장 진행하면서 2.3까지 책의 내용대로 진행해봤는데 너무 진행이 안되서 글 남깁니다.
킬구형 1장 - 작전3에서 아래와 같이 얘기한 부분에 대해 궁금한게 있어. '리스너는 감시와 통제만 담당한다. 실제 시스템 제거 로직( 비즈니스 로직 )은 분리하라. 리스너가 너무 많은 일을 하면 유지보수가 어려워지고 시스템 동작을 파악하기 힘들어진다' 청크 기반 배치 잡이라고 하고 A라는 테이블에서 데이터를 읽어와서 B라는 테이블에 데이터를 삽입하는데 B 테이블에 데이터가 없다면 삽입, 있다면 수정하는 로직이 있어. 이 과정들이 모두 끝나고 마지막으로 B 테이블에 수정 날짜 컬럼이 잡 시작 시간보다 이르다면 A 테이블에 데이터가 없으므로 B 테이블에서 이러한 데이터들을 삭제하려는 로직을 넣는다고 했을 때 아래 궁금증들이 있어. 1. 위 얘기를 토대로 생각해보면 삭제 로직은 청크 기반 스텝 이후 태스크릿과 같은 다음 스텝으로 넣는게 좋은 것 같은데, 실무에서는 해당 잡 전용 리스너를 하나 추가로 만들어서 afterJob 메서드에 배치 상태가 COMPLETED인 경우에 삭제 로직을 실행하도록 하는 방식은 지양하는 편인거야? 전용 리스너를 만들어서 사용하는 경우도 있어? 만약 리스너에 삭제 로직을 넣는다고 했을 때 리스너에서 데이터 삭제 과정 중 오류가 발생한 경우에는 잡이 실패 상태로 종료되는거지? 2번과 같은 맥락인데 리스너에 삭제 로직을 넣는 경우 트랜잭션이 필요할텐데 리스너는 트랜잭션 범위가 어떻게 돼? 스텝에서는 청크 범위, 태스크릿의 반복 범위라고 본 걸로 기억하는데 리스너는 트랜잭션 설정 자체가 안되는건지 리스너 범위 내부에서만 설정되는건지 궁금해.
안녕하세요. 상품 상세조회 섹션을 보고 궁금한 점이 생겨 질문을 드립니다 ! 평소에는 개념간 격벽을 신경쓰지만 조회 시에는 지키기가 쉽지 않더라고요. 특히 list 조회인데 다른 개념이 있어서 조회 + in query + 조립 등을 하면 너무 과한가..? 싶은 생각이 가끔 듭니다. 제가 생각하는 방법과 트레이드 오프입니다. 개념간 격벽을 유지하고, 쿼리를 분리 아무래도 복잡해지는 구현 DB 커넥션을 위한 오버헤드 증가 팀원의 공감을 생각보다 얻기 힘듦(사실 저부터 확신이 없는...) 조회의 경우 느슨한 규정 화면 요구사항에 따라 변하는 쿼리 재사용성 x 주체가 모호함 점점 쌓이는 비슷한 쿼리와 projection dto들 거의 혼자 백엔드 개발을 진행하다보니 이런 고민에 대해 선택을 내리기 참 어렵네요 ㅎㅎ.. 제미니님은 어떤식으로 선택하시는지 궁금합니다 ! 감사합니다.
학습 관련 질문이 있으시면, 상세하게 남겨주세요. 문제가 발생한 부분의 코드를 함께 올려주세요. 수업 영상 몇 분/초 구간인지 알려주세요. 10분 56초 부분에서 prompt 작성코드를 보면 text형식으로 작성되어있고 ChatPromptTemplate을 사용하고 있는데 지난 강의에서는 ChatPromptTemplate 은 message list형식으로 작성한다고 하셨었습니다. ChatPromptTemplate은 그냥 PromptTemplate과 달리 from_template을 사용하면 일반 text 형식 prompt도 처리가 가능한 구조인건가요? 그런거라면 굳이 PromptTemplate을 사용해야하는 이유가 있나요? ChatModel 이 아니라 LLM 일 경우는 ChatPromptTemplate.from_template으로 작성한 prompt는 동작하지 않는 건가요? RAG는 LLM이 아니라 ChatModel을 사용해야하는 이유가 뭔가요? LLM과 ChatModel의 차이를 multi-turn 처리 가능 여부로 보면 될까요?