안녕하세요 오늘 시험 보고 온 사람입니다 문제들 중 해시 라고 답을 적는 문제가 있었는데 해시(HASH) 라고 적고 제출했습니다. 이렇게 하면 오답처리가 되서 5점이 날라가는지 궁금합니다. 일부는 Hash가 아니면 오답이라고 해서요 감사합니다 질문을 작성하기 전에 아래 내용을 꼭 확인해주세요. 질문을 올릴 때는 이 안내문을 모두 지우고, 질문 내용만 작성해주시면 됩니다. 질문 작성 방법 질문은 동영상 강의 화면 오른쪽의 [커뮤니티] 버튼 을 통해 남겨주세요. 커뮤니티를 통해 질문해주셔야 어떤 강좌에서 나온 질문인지 확인할 수 있습니다 . 질문할 때는 영상의 몇 분 몇 초 구간 인지 함께 적어주세요. 예: 12분 35초 부분에서 ~가 이해되지 않습니다. 질문을 올리기 전에 기존 질문 게시판을 먼저 확인해주세요 . 이미 다른 수강생이 같은 내용을 질문했을 수 있습니다. 답변이 어려운 질문 아래에 해당하는 질문은 답변드리기 어렵습니다. 학교 과제, 타 강사의 코드 등 외부 수업 자료에 대한 질문 제가 다루는 커리큘럼 범위를 벗어난 이론 질문 지나치게 세부적인 컴퓨터 이론 질문 시험 출제 가능성이 낮거나, 출제되더라도 비중이 매우 낮은 암기성 내용 예: 서브넷 마스크 계산처럼 외울 내용은 많지만 실제 출제 비중이 낮은 주제 좋은 질문 예시 3강 12분 35초에서 설명하신 반복문 조건식이 이해되지 않습니다. 왜 i < 10으로 작성하나요? 5강 08분 10초에서 나온 코드 실행 결과가 제 환경에서는 다르게 나옵니다. 아래는 제가 작성한 코드입니다.
안녕하세요. Member 객체를 생성할 때, 다른 방법을 선택해 보는 것은 어떨까요? 기존에는(설계 트레이드 오프 개선 전) Member.register() 가 MemberRegisterRequest 에 직접 의존하고 있었는데, 도메인 모델이 요청 DTO를 알지 않도록 의존성을 반대로 두는 방법입니다. MemberRegisterRequest 에서 Member 객체를 직접 생성하는거죠. public record MemberRegisterRequest( ... ) { public Member toMember(PasswordEncoder passwordEncoder) { return Member.register(email, nickname, password, passwordEncoder); } } public class Member extends AbstractEntity { ... public static Member register(String email, String nickname, String password, PasswordEncoder passwordEncoder) { Member member = new Member(); member.email = new Email(email); member.nickname = requireNonNull(nickname); member.passwordHash = requireNonNull(passwordEncoder.encode(password)); member.status = MemberStatus.PENDING; member.detail = MemberDetail.create(); return member; } ... } public class MemberModifyService implements MemberRegister { ... @Override public Member register(MemberRegisterRequest registerRequest) { checkDuplicateEmail(registerRequest); Member member = registerRequest.toMember(passwordEncoder); memberRepository.save(member); sendWelcomeEmail(member); return member; } ... } MemberRegisterRequest.toMember(passwordEncoder) 에서 Member.register(email, nickname, password, passwordEncoder) 를 호출하면 Request DTO → Domain 방향으로만 의존합니다. 별도의 MemberRequestInfo 같은 파라미터 객체도 필요하지 않아 구현이 단순합니다. Request DTO를 단순 데이터 전달 객체로 유지하려면 서비스 계층에서 각 값을 꺼내 Member.register() 에 전달하는 방법도 가능합니다. (이 방법보다는 이전 방법이 서비스 계층을 간결하게 유지하는 방법이긴 합니다.) 이런 방법을 기본 개발 규칙으로 두면, 의존성 방향도 문제 없고, 추가적인 객체(예: MemberRequestInfo )를 생성할 필요도 없어서 충분한 이점이 있습니다. 다만, register() 에 전달해야 할 파라미터가 많아진다면 번거롭긴 하겠네요. 이 방법에 대한 의견도 부탁 드립니다. 감사합니다.
안녕하세요. 현재 자바 입문편, 기본편을 수강한 후 중급 1편의 예외 처리 단원까지 학습한 상태입니다. 중급 1편부터 난이도가 크게 높아졌다고 느끼고 있는데, 여기서 학습 방향에 대해 조언을 구하고 싶습니다. 강의 내용과 예제는 이해하는 데 큰 어려움이 없습니다. 다만 코드를 보고 작성하며, 정리된 내용을 읽고 이해하는 것과 실제로 지식을 완전히 체화하는 것은 다르다고 생각하여 복습의 필요성을 느끼고 있습니다. 한편으로는 앞으로 수강해야 할 강의가 많이 남아 있기 때문에, 지금 충분한 시간을 들여 복습하는 것이 좋은지 고민됩니다. 아니면 일단 다음 강의들까지 계속 학습한 뒤, 이후 심화 내용을 공부하면서 부족하거나 이해가 부족한 부분이 발견될 때 그때 다시 복습하는 방식이 더 효율적인지 궁금합니다.
안녕하세요 문제를 풀면서 항상 헷갈리는 부분이 있어 글 남기게 되었습니다. "7분 39초" 를 보면 Child c = new Child () 해서 위에 있는 Child() 로 올라가 super() 로 부모클래스 방향으로 가는건 알겠습니다 혼자 문제를 풀다보면 올라갔는데도 부모를 안하고 쭉 내려오는 경우가 있던데 그럴땐 child() 없는 경우엔 그냥 쭉 내려가도 괜찮은 걸까요? new 생성자, 위로 생성자 올라가서 () 이렇게 괄호가 있으면 무조건 부모 () <-값없는 기본 () 문장으로 올라간다! 로 이해하면 되는지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Java 17 설치했고, spring boot 버전 3.x 선택하려 하는데, 선택지에 4,x만 있네요. 어떻게 하면 좋을까요?
안녕하세요 재민님! 좀 오래되긴 했지만, 2년 전쯤에 발표하신 (유튜브에도 자주 언급하신 ㅎㅎ) 개념과 격벽을 통해서 지속 성장 가능한 설계를 만드는 방법에 대해 여쭤보고 싶은 부분이 있어서 질문드립니다! Q1) 발표에서 개념을 코드로 느끼면서 잡아간다고 하셨는데, 이게 개인의 사고에 많이 의존하는 것 같아서요. 실제 팀에서는 한 사람이 발견한 개념(예: 대출 사례의 '연체' 분리 같은)을 팀원들과 어떻게 합의하고 공유하시나요? 코드 리뷰에서 자연스럽게 되는 건지, 별도의 논의 과정이 있는지 궁금합니다. 팀과 협업하는 관점에서는 설계가 결국 합의의 과정이기도 하다 보니, 이 방식이 팀 규모에서는 어떻게 작동하는지가 특히 궁금했습니다 ㅎㅎ Q2) 개발을 하다 보면 "설계"라는 과정을 많이 겪게 되는 것 같습니다. API 설계, ERD 설계, 시스템 아키텍처 설계 등등 참 많네요. 발표에서는 분석·설계 없이 바로 구현하면서 개념과 격벽을 잡아가라고 하셨는데, 실제로 새 기능이나 서비스를 시작하실 때 무엇부터 손대시는지 궁금합니다. 개념(도메인 클래스)부터 코드로 잡고 API나 DB 스키마는 나중에 따라오게 하시는 건지, 아니면 이런 것들 중 일부는 최소한으로 먼저 정해두고 시작하시는지, 재민님의 실제 작업 순서가 궁금합니다. 물론 절대적인 정답은 없고 케바케일 것 같긴 합니다. 예를 들면 프론트엔드나 타 팀이 의존하는지 등등에 따라 달라지겠지만요. 재민님만의 어떤 기준 같은게 있는지 궁금합니다. Q3) AI가 코드를 대신 짜주는 시대가 되다 보니, 회사에서도 코드를 잘 짜는 것 자체의 가치가 점점 낮아지는 분위기인데요. (물론 회사 KPI마다 다르겠지만 ㅎㅎ) 이런 시대에 개념과 격벽을 세우는 역량은 오히려 개발자의 마지막 차별점이 된다고 보시는지, 아니면 이 피드백 루프(구현하며 느끼고 개선하는)마저 AI가 돌게 될 거라고 보시는지, AI 시대에 이 방법론이 가지는 의미를 어떻게 보시는지 궁금합니다.
강의를 듣다가 궁금한 부분이 있어 질문드립니다! Secondary Index를 사용하면 Primary(Clustering) Index Lookup 과정에서 랜덤 I/O가 발생할 수 있다고 이해하고 있습니다 다만 이는 Cardinality가 낮은 Boolean 컬럼에만 국한된 문제라기보다는, Secondary Index의 정렬 순서와 PK 순서가 일치하지 않는 경우 일반적으로 발생할 수 있는 문제라고 생각합니다 또한 MySQL에서는 MRR을 통해 조회 대상 PK를 정렬한 뒤 접근함으로써 랜덤 I/O를 줄일 수도 있는 것으로 알고 있습니다 강의에서는 Boolean 컬럼의 경우 특정 값이 전체 데이터의 상당 부분을 차지할 가능성이 높기 때문에, MRR을 통한 정렬 및 테이블 Lookup보다 Full Table Scan이 더 효율적일 수 있다는 취지로 설명해주신 것으로 이해했습니다 그렇다면 인덱스의 효율은 Cardinality 자체만으로 결정된다기보다, 실제 값의 분포와 선택도, 예상 조회 행 수, Covering Index 여부, MRR 적용 여부 등의 요인을 함께 고려해 판단한다고 이해해도 될까요?
업캐스팅(부모 형태, 자식 생성자) 14:09 부모 기본 생성자가 있는 상황에서 자식을 호출하는 구문 내 super()가 없다면 묵시적으로 부모 기본 생성자를 출력하라라는 뜻이 있다고 아래와 같이 답변을 주셨는데 부모 기본생성자를 부르는 super() 가 생략되어 있는 것입니다. 부모 생성자를 부르는 것이 명시적으로 없으면, 묵시적으로 super() 을 Java가 넣어줍니다. 자식 필드가 초기화되기 전에는 무조건 부모 필드가 초기화 되어야하기 때문입니다. 없으면 알아서 부모의 기본 생성자를 부르고, 명시적으로 있으면 해당 부모 생성자를 부른다고 생각하시면 됩니다. 그렇다면 실제 시험에서 자식 코드 내에서 부모 기본 생성자는 있고 자식 코드 내에 super()가 없다면 부모 기본 생성자의 값은 적으면 되는건가요?