안녕하세요. 우선 좋은 강의 제작해주신 토비님께 항상 감사하고 있어요. 이제 배운지 1년된 왕초보입니당.. 혼자 배워보면서 개인 프로젝트를 만들고 있는데 JPA를 사용하고 있어요. 제가 궁금한 것이... N+1 관련한 문제입니다. 아 일단 프로젝트 주제는 복식부기 가계부에요. @Entity ... public class Journal extends BaseEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ledger_id", nullable = false, updatable = false) @OnDelete(action = OnDeleteAction.CASCADE) private Ledger ledger; ... @OneToMany(mappedBy = "journal", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private List<EntryLine> entries = new ArrayList<>(2); ... public EntryLine getEntryLine(EntrySide side) { switch (side) { case CREDIT : this.entries.stream().filter(line -> line.isCredit()).findFirst() .orElseThrow(...); case DEBIT : this.entries.stream().filter(line -> line.isDebit()).findFirst() .orElseThrow(...); default : throw new ... } } ... // Service에서 저장되기 전에 호출 public void validateSavable() { ... validateJournalSave(); } private void validateJournalSave() { AccountType debit = getEntryLine(EntrySide.DEBIT).getAccountType(); AccountType credit = getEntryLine(EntrySide.CREDIT).getAccountType(); if(!this.transactionType.isValidPlacement(debit, credit)) { throw new ... } } } Journal Class에서 EntryLine List에 접근하고 있어요. 그리고 EntryLine Class는 이렇게 생겼어요. @Entity ... public class EntryLine extends BaseEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "journal_id", nullable = false, updatable = false) private Journal journal; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "account_id", nullable = false) private Account account; ... // private package 접근제어자 사용 // Account는 Category를 참조중이에요. AccountType getAccountType() { return this.account.getCategory().getAccountType(); } } 거래가 저장되기 전에 Journal : validateJournalSave() 에서 this.transactionType에 따라 차변과 대변에 올바르게 위치하고 있는지 검사한 후 저장하고 있는데 이것을 생성과 수정할 때 두 곳에서 사용하고 있어요. Ledger에 5개 Category가 있고, Account는 그 Category를 참조하고 Category에서만 AccountType이 있어요. Journal이 각 EntryLine의 AccountType을 얻기 위해 Journal -> EntryLine -> Account -> Category -> getAccountType() 이렇게 흘러가네요. 이렇게 접근해도 설계상 괜찮은걸까요? Journal을 저장할때는 @Query 사용해서 Fetch Join으로 필요한 Account를 가져오고 있는 상황이에요. Journal이라는 엔티티가 비즈니스 로직 수행을 위해서 다른 엔티티의 필드까지 깊게 참조?? 가져오도록 설계하는게 옳은건지 모르겠어요.
안녕하세요. 강사님! 서브에이전트 기초: 코드 리뷰 서브 에이전트 강의 를 들으면서 /agents 명령어를 통해 코드리뷰와 관련된 서브에이전트 1개를 생성 했습니다. 그 결과 강사님의 강의 내용과 동일하게 .claude/agents/code-reviewer.md 가 생성되었고, 그 이후에 프롬포트를 작성할때 해당 에이전트를 사용해서 전체 코드 리뷰를 진행했습니다. 근데 그 이후에 .claude 디렉토리 하위에 사진과같이 agent-memory/code-reviewer 가 생성되고, 그 하위에 4가지의 md파일이 생성 되었는데요. (1) 해당 파일이 원래 생성되는게 정상인건가요? 현재 시점 기준에서요!! (2) 또한 해당 파일은 굳이 github에 안올려도 되겠죠? (.gitignore) 뭔가 docs를 한번 더 보다가 아래와 같은 내용이 있던데(새로 추가가된건진 잘 모르겠습니다,,) , (3) 저런 맥락이면 CLAUDE.md 에 약간 이런식으로 넣어놓은다음 그 다음에 다시 에이전트를 호출 하는 방식이 올바른 방향성일까요? ## Subagent 가이드 (를 만든 후) ### code-reviewer 에이전트 에이전트는 다음을 따르세요: 1. 작업 시작 전 `.claude/agent-memory/code-reviewer/` 확인 2. 새로운 패턴/이슈 발견 시 메모리 업데이트 3. 작업 완료 후 발견사항 저장 매 리뷰마다: - 해결된 이슈는 known_issues.md에서 제거 - 새로운 패턴은 code_patterns.md에 추가 - 아키텍처 변화는 project_overview.md 업데이트
안녕하세요 선생님, 강의 잘 듣고있습니다! 다름이 아니라, 설정 문제인지 현 시점 VSCode 내에서는 오류가 저렇게 많이 표시가 됩니다ㅜ 동작과는 상관없어 그냥 사용중이었는데 앞으로도 계속 저러면 너무 불편할거 같습니다. 해결 방법이 없을까요? 아래는 setting.json 내용입니다.. { "workbench.startupEditor": "none", "editor.formatOnSave": true, "workbench.iconTheme": "material-icon-theme", "js/ts.validate.enabled": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "js/ts.implicitProjectConfig.checkJs": true, "workbench.colorTheme": "Dark Modern", "editor.fontSize": 14, "workbench.secondarySideBar.defaultVisibility": "hidden", "terminal.integrated.fontSize": 14, "window.zoomLevel": 1, } 확인 한 번 부탁드리겠습니다..!
안녕하세요? 114강 강의에서 Playwirght MCP나 린트/타입/빌드 체크를 하면 오류 비율이 확 낮아진다고 말씀주셨는데요. 강의를 보면 오류가 사라질 때까지 계속 작업을 반복하는 것 같습니다. 저는 pro 구독자라서 토큰 한도를 계속 걱정하고 있는데, 만약 클로드 코드가 오류 제거를 위해 계속해서 작업을 반복하다가 (1)토큰 한도를 넘기거나 (2)컨텍스트 한도를 넘기는 경우, 각각 어떻게 되는 건지 궁금합니다.
강사님 안녕하세요 아래부터 자세한 설명 없이 코드를 쳤는데 하둡 셋업할때 필수로 입력 해야 하는건가요? export PDSH_RCMD_TYPE=ssh ssh-keygen -t rsa -P "" cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
클로드 코드를 일전에 이미 설치했는데, 환경변수를 설정하지 않았던 것 같아서 삭제 후 재설치하려고 합니다. 클로드 삭제 후에 프롬프트 재입력했는데, 상기 이미지와 같이 나옵니다. 환경변수 설정이 되어 있는것처럼 보여서, 삭제가 제대로 된 것인지 환경변수 설정 되어있는 것인지, 어떻게 삭제하고 다시 재진행해야 할지 문의드립니다.
안녕하세요 짐코딩님! 저는 클로드 강의 거의 완강하고, 실무에 적용해서 클로드코드 잘 쓰고 있는 3년차 개발자입니다. 이 강의 덕분에 생산성 엄청 올랐습니다. 훌륭한 강의 감사합니다. 그런데 프로젝트를 몇 개 만들다보니.. 점점 매너리즘에 빠지고 있습니다..! 처음에 강의를 보고 따라할 때는 PRD, ROADMAP은 기본이고 프로젝트 구조나 코드까지 세세하게 체크를 했는데요, 실무에서 반복적으로 진행하다 보니,, 클로드가 짰지만 제가 파악하지 못하는 코드가 늘어나고 있습니다. 물론 세세하게 다 봐야 하는게 맞는데 실프로젝트 요구사항이 복잡하고 코드 양이 많다 보니.. 작업 후에 오류가 없으면 '클로드가 잘했겠지' 하고 넘어가게 되네요 🥲 🥲 제가 지금 크게 잘못 가고 있는 것 같은데요, 짐코딩님은 shrimp-task-manager 같은 작업관리자를 얼마나 사용하시고, code-review 같은 서브에이전트 사용 완료한 이후에.. 코드를 어떻게 검증하시나요? 개발 업무 중, ai 를 사용하지 않고 직접적인 코드 리뷰에 할애하는 비율은 어떻게 되시는지도 궁금합니다!
volatile 관련해서 자료를 보다 보니, 일부 자료에서는 “CPU 캐시를 우회하는 것이 아니라 happens-before 관계와 메모리 배리어를 통해 가시성과 재정렬 제한을 보장한다”고 설명하더라고요. 골드 답변의 내용과 정반대되는 내용이라 혼란스러워서 어떻게 이해하면 좋을지 질문드립니다.