1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-8 여기까지 이해하신 내용은 무엇인가요? 외래키 제약조건으로 인해 발생한 데드락 문제를 해결하기 위해 INSERT 하려는 테이블에 외래 키를 제거한다. 2. 어려움을 겪는 부분 외래키를 만약에 제거한다면, 어플리케이션 레벨에서 직접 관리한다고 했는데, 구체적으로 어떻게 관리를 하는 건지 궁금합니다! INSERT 하려는 테이블과 연관된 테이블들을 먼저 조회( findXXX() )를 하고, 만약에 없다면 예외를 발생시켜서 트랜잭션을 롤백시키는 방식으로 처리하나요? 실무에서 주로 어떻게 해결하는지 궁금합니다. 그리고 외래키를 사용하지 않는 첫 번째 방법은 이미 테이블이 생성된 시점( INSERT 하려는 테이블에 외래키가 추가되어 있는 상황)에서도 적용할 수 있는건가요? 예를 들어, 이미 테이블에 데이터가 추가되어 있는 상황에서 첫 번째 방법을 적용하려면, 테이블 구조를 아예 바꿔야 할텐데 이 경우에는 두 번째 방법인 쿼리 순서를 바꾸는 걸 대안으로 사용하는 건가요?
강의에선 되게 단순하게 큰 틀 위주로 알려주시는 것 같아서 개인적으로 더 자세한 의미나 추가적인 개념이 궁금할 때 검색해보는 편인데, DI라는 것이 클래스 간의 결합도를 낮추고 객체의 유연성을 높이기 위해 빈 객체를 만들어 주입하는 것을 의미한다고 정리했습니다. 이게 맞게 정리한건지 궁금합니다. 또 추상 클래스와 인터페이스 간의 차이점은 찾아봐도 이해가 어렵길래 선생님의 친절한 설명이 필요할 것 같아서 추가로 여쭤봅니다!
createObjectURL로 이미 메모리에 보관된 이미지 파일들은 단순히 filter로 삭제해도 삭제되지 않기때문에, 메모리 누수가 발생된다고 하셨는데요. 1. 실제로 메모리 누수가 발생하고 있는지는 어떻게 확인 할 수 있는건가요?? 2. 또 이미 AI가 많이 발전해버린 뒤에 개발을 접한 저는 수동적인 태도로만 공부를 해서인지, 여기에서 메모리 누수가 발생하겠구나. 이건 이런 문제가 생길텐데 어떻게 해결하지? 하는 생각을 하나도 안 하고있음을 깨달았습니다...어떤 태도로 임해야 저런 생각도 당연하게 할 수 있을까요?ㅠㅠ
// 1) 모든 입력 아이템의 json을 순서대로 병합 let merged = {}; for (const item of $input.all()) { Object.assign(merged, item.json); } // 2) 'IMG - 시트 행 가져오기' 노드의 첫 번째 아이템에서 ID를 가져와 추가 merged.ID = $('IMG - 시트 행 가져오기').first(). json.ID return [{ json: merged }]; 코드 사용했을때 60초 이상 실행되어 타임아웃 에러가 납니다. 메시지 : Problem in node ‘Code in JavaScript‘ Task request timed out after 60 seconds
안녕하세요! 현재 70. MCP 서버 설치 강의를 듣고 따라하는 중인데요, settings.local.json에 permissions > allow 규칙에 "mcp__shadcn"을 등록했는데 클로드가 계속 "mcp__shadcn__*" 관련 명령어를 허용할건지 질문을합니다. 제가 적용한 순서는 클로드 종료 터미널에서 shadcnui 설치 클로드 시작 로그인 기능 구현 요청 프롬프트 실행 첫 번째 질문 나왔을 때 바로 setting.local.json 파일에 "mcp_shacn" 추가 후 저장 이후 첫 번째 질문에 "yes, and don't ask again ~~" 옵션 선택 settings.local.json 수정 후 바로 클로드에 반영안되는건가요? 클로드 껐다 켜면 이전 컨텍스트 날아갈 것 같아서 계속 질문에 답하고 있는데,, 껐다 켜도 되나요?
/permissions의 workspace를 설명하실 때, ../로 상위 디렉토리를 참고할 수 있다고 하셨는데, permission 에서 참고하는게 있나요? 그냥 권한설정인데.. 추가로 설명하실 때 A라는 프로젝트를 참고해서 B라는프로젝트를 개발할 때 사용한다고 하시면서 해당 프로젝트의 코드베이스를 참고할 수 있다고 하셨는데요, 이 말이 이해가 안됩니다. permissions는 그냥 권한 설정아닌가요?
한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)
아직 강의 전체는 안보고 우선적으로 MCP가 궁금해서 이 부분부터 봤습니다. 아래 문장 질문드려요. "기존에는 agent를 사용하는 개발자가 직접 툴을 사용/개발했는데, MCP프로토콜이 나오면서 agent를 사용하는 개발자가 직접 툴을 개발하는게 아니라 application 공급자가 MCP를 만들어서 사용자와 agent개발자에게 연결해서 쓰면된다는 식으로 추세가 변화했다. 그러니까 공급자가 MCP를 개발해서 서버에 올려도 어느정도 api가 변경되면 application 공급자가 전부다 MCP규칙에 맞춰서 코드를 수정해줘야 한다. 즉 원래는 agent 개발자가 툴개발(application사용)에 있어서 부담이 있었다면 지금은 application 공급자가 직접 MCP를 만들어서 사용자에게 제공해줘야 하는거니 더 부담이 커졌다." 제가 이해한게 맞는지 확인해주세요. 크게보면 보면 주체가 3가지인가요? 1) LLM 2) Tool 개발자(agent 개발자) 3) 어플리케이션 개발자(구글 드라이브, 네이버메일 등) MCP가 나오기 전에는 Tool 개발자가 LLM API와 어플리케이션 API를 통해서 agent툴을 만들었다면 MCP가 등장한 후에는 Tool 개발자가 LLM API만 알고 있으면 Tool(agent) 개발을 할수 있다는 말인거죠? 결국에는 툴 개발자가 Application API는 공부할 필요가 없지만 LLM API는 공부해야 agent를 만들수 있다는 말이죠? LLM과 application이 MCP로 통신(연동)하는 건 이미 application 개발자가 별도의 MCP서버를 만들었으니 연동부분은 만들필요가 없음
안녕하세요 '커스텀 커맨드 고급: 동적 파라미터' 강의 교안 자료중 [공식 문서] 사용자 정의 슬래시 명령어 페이지가 존재하지 않아 공유드립니다. 프론트매터 참조가 필요하신 분들은 아래 링크에서 확인하실 수 있습니다. https://code.claude.com/docs/ko/skills#frontmatter-reference
store에서 actions를 생성하고 store를 내보내려고 할 때에 export const useAlertModal = () => { const store = useAlertModalStore(); return store as typeof store & State; }; 이렇게 as 단언문을 추가하셨는데 저는 as typeof store & State 이 부분을 추가하지 않아도 똑같이 추론이 되고 있습니다. const store: Write<State, { actions: { open: (params: Omit<OpenState, "isOpen">) => void; close: () => void; }; }> 둘 다 이렇게 동일하게 나오는데 어떤 차이점이 있는건가요?
AI 답변으로 해결됐습니다! 강의 제목처럼 말 그대로 재생성 방지였군요..! 마운트 시 생성된 함수를 재사용하기 때문에 리렌더링 되더라도 props로 넘어간 함수는 참조 값이 똑같은 처음 생성된 함수이다. 이해했습니다! 안녕하세요, 강사님! 73강 useCallback과 함수 재생성 방지 강의의 4분 쯤의 내용에 대해 질문이 있습니다. 강의에서, useCallback 적용한 'onCreate, onUpdate, onDelete 함수가 두 번째 인수로 빈 배열을 할당했기 때문에 마운트 이후에는 다시는 생성되지 않는다.'라고 설명해주셨는데요! 그러면, 첫 마운트 이후 todo 아이템을 생성, 수정, 삭제 할 때는 해당 함수들이 어떻게 동작하는 것일까요? 동작은 하되, 생성하지 않는다.. 라고 이해를 해야 하는 걸까요..? 답변해주시면 감사하겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Array 연습 문제 5번을 제가 스스로 풀어보았을 때 이런 식으로 코드가 나왔고, 실행시켜봤을 때 답은 똑같이 나오는 것 같습니다. 다만 풀이와는 코드가 조금 다른 부분이 있는데 혹시 제가 풀어 본 코드도 맞는 코드인가요? 아니면 틀린 걸까요?
안녕하세요, 토비님. 강의 초반에 말씀해 주신 것처럼, 리팩토링 과정에서 “제가 했다면 어떻게 했을까”를 계속 생각해 보며 토비님의 의사결정 과정을 따라가고 있습니다. MemberService.register() 메소드에서 emailSender.send(...) 를 sendWelcomeEmail() 로 분리하시는 과정을 보며 두 가지 고민이 생겼습니다. 첫째, 환영 이메일의 내용이나 정책이 변경될 때마다 MemberService 의 코드가 함께 변경되어야 한다면, 이는 SRP 위반에 해당하지 않는지에 대한 고민입니다. 이 경우 환영 이메일 전송에 대한 책임을 EmailSender 인터페이스 쪽으로 옮기는 것이 더 적절한지 궁금해졌습니다. 둘째, 만약 EmailSender 인터페이스에 해당 메소드를 추가한다면, 구현체가 늘어날수록 인터페이스가 비대해지거나 향후 구현 복잡도가 증가할 수 있다고 느꼈습니다. 이런 경우 default method 로 제공하는 방식에 대해서는 어떻게 생각하시는지도 궁금합니다.
안녕하세요 module.exports 나 require 등의 node js 관련 기능을 작성하는데 자꾸 자동완성에 의해서 다른 글자로 바뀌네요 ex) module.exports 작성하는데 module 작성하고 '.' 누르거나 require 작성하고 '(' 누르면 다른 거로 바뀜 강사님 화면에서는 자동완성이 나오더라도 안 바뀌는데 혹시 어떻게 설정하셨는지 궁금합니다..!
todo list 추가/삭제 시 캐시데이터도 각각 따로 해줘야하는 내용은 알겠는데, 현재 체크박스만 변경할 때 캐시데이터를 업데이트 해주는거는 불필요하지않을까 생각이 듭니다. 만약 내용 수정같은경우라면 해줘야하겠지만..(?) 이전코드와 비교해봤을때 checkbox를 수정했을 때 "todo","list" 는 id만 갖고있어 문제는 캐시데이터 업데이트 해줄일은 없고, "todo", "detail"은 바로 업데이트가 되는데 굳이 코드 수정해주는 이유를 아직 모르겠습니다.