안녕하세요 영한님!! 항상 좋은 강의 만들어주셔서 감사합니다! 함수 기반 인덱스 생성에서 질문이 있어서 글을 남깁니다! 강의를 들으면서 함수 기반 인덱스를 생성하면 가상 컬럼이 없고, 인덱스만 만들어진다고 이해했습니다. 그래서 product_json 테이블에 만들어진 가상 컬럼과 idx_v_storage 인덱스를 drop한 다음 각각 두가지 방식으로 테스트를 해보았는데요 CREATE INDEX idx_func_storage ON product_json (( CAST(attributes->'$.storage' AS UNSIGNED))); EXPLAIN SELECT * FROM product_json WHERE attributes->'$.storage' = 256; 이렇게 할 경우엔idx_func_storage 인덱스를 잘 타는 걸로 나왔지만, CREATE INDEX idx_func_storage ON product_json ((JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED))); EXPLAIN SELECT * FROM product_json WHERE attributes->'$.storage' = 256; 이 경우에는 FULL TABLE SCAN 이 되고, 인덱스도 NULL로 나왔습니다. 두 방식 모두 각각 idx_func_storage 인덱스는 잘 생성이 되었는데도 JSON_VALUE() 방식에서는 인덱스를 사용하지않았습니다 그래서 AI에게 물어보니 MySQL functional index는 WHERE절의 표현식이 인덱스 정의와 문자 수준으로 동일해야 한다. 이유는 가상 컬럼 방식에서는 MySQL이 내부적으로 expression rewrite 과 virtual column substitution를 더 적극 수행하지만 functional index는 표현식 exact match 요구가 훨씬 엄격하기 때문이다. CREATE INDEX idx_func_storage ON product_json ((CAST(attributes->'$.storage' AS UNSIGNED))); 이렇게 인덱스를 생성했다면 EXPLAIN SELECT *FROM product_json WHERE CAST(attributes->'$.storage' AS UNSIGNED) = 256; 이렇게 WHERE 절을 작성해야 하고 CREATE INDEX idx_func_storage ON product_json ((JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED))); 이렇게 인덱스를 생성했다면 EXPLAIN SELECT * FROM product_json WHERE JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED) = 256 이렇게 WHERE 절을 작성해야 한다고 답변해주었는데요! 이렇게 각각 테스트 해보면, 인덱스를 잘 타는 것으로 나옵니다..! 또한 CAST()로 인덱스를 생성한 경우 WHERE절에 JSON_VALUE()를 사용한 쿼리는 Index를 사용하지않고, FULL TABLE SCAN을 했으며, JSON_VALUE()로 인덱스를 생성한 경우 WHERE절에 JSON_VALUE()를 사용했을 경우에만 Index를 사용했습니다. 제 테스트에서는 CAST() 기반 인덱스는 WHERE절 축약 표현식에서도 인덱스를 사용하였고, WHERE절 JSON_VALUE()는 인덱스를 사용하지 않았습니다. JSON_VALUE() 기반 인덱스에서는 WHERE절에 동일한 JSON_VALUE() 표현식을 사용했을 경우에만 인덱스를 사용하는 것으로 보였습니다 이게 맞는 걸까요? 아니면 제가 잘못 확인한 걸까요?, 또한 functional index 매칭 규칙 실제 범위가 어디까지 인지? AI가 답변해준 동작 방식이 맞는 건지도 여쭤보고 싶습니다! (제 MySQL버전이 8.0.41이네요,,) 영상을 다시 잘 보니, 2:18 분에 idx_func_storage 인덱스를 CAST() 구문으로 생성하시고, 2:25분에 확인하실 때, EXPLAIN의 결과에서 idx_v_storage인덱스가 나오긴 합니다!
nextjs16 스킬 만드신거 보니깐 next docs에 있는 내용들을 주요 단위로 끊어서 md 파일 하나씩 만들어서 SKILL.md 에서 포인팅이 되더라구요. 근데 next docs에 있는게 정말 하루가 멀다하고 자주 바뀌는거라면 (클로드 독스처럼 꽤 기능 업데이트가 빈번한경우) 그때마다 일일이 웹 사이트 내용 긁어와서 마크다운 파일 업뎃하는것도 시간을 잡아먹을 듯 한데 애초에 그냥 웹 사이트를 포인팅할 수 있을지도 궁금합니다.
안녕하세요 모델에게 요청사항이나 질의를 할때 영어를 사용하는것이 훨씬 더 토큰을 적게 소비한다고 알고 있는데 현 강의에서는 모두 한글로 진행을 하는것 같습니다. 이유가 무엇인가요?? 한글과 영어 사이의 토큰소모가 크게 차이가 나지 않아서인가요? 아니면 강의를 원활하게 진행하기 위함인가요? 강사님은 어떤 방식으로 사용하시는 궁금합니다 감사합니다.
섹션 26 - 192번 강의: 작업 구현 애플리케이션 골격 구축 영상에서는 7분 20초쯤에 보면 코드 리뷰 해달라고 요청하고 나서는 클로드가 계속 터미널을 선점하면서 리뷰를 진행하더라구요. 그런데 저도 강의를 따라 해보니 아래 사진처럼 백그라운드 작업으로 들어가더라구요. 시간이 좀 지나서 결과가 나오긴 했는데 마치 결과가 끝난 듯한 착각을 주는데 자동 백그라운드 작업을 막을 수 있나요?
프롬프트 작성하다가 문장 개행하는 순간에 갑자기 프롬프트가 작동되서 뭔가했더니 /terminal-setup을 통해 변경했던 줄바꿈이 다시 option+enter로 바뀌었더라구요.. 그래서 다시 /terminal-setup을 통해 바꾸려니 이렇게 뜨길래 지피티에 물어보너 cmd+shift+p > shift+enter로 검색 > 사용자로 정의되어 있는걸 삭제해라 해서 해당항목을 삭제했더니 Installed Cursor terminal Shift+Enter key binding이 뜨길래 됐구나 싶었더니 글쓰면서 줄바꿈하려니 다시 옵션+엔터로 바뀌었습니다.. 도대체 어떻게 해야할까요..? 커서에 있는 터미널에서는 shift+enter는 잘되는데.. 클로드코드에 있는 글을 쓸때만 옵션+엔터로 밖에 안되네요 ㅠㅠ
현재 버그때문에 ide 랑 연동이 안된다는건 이해했습니다. 그런데, 연동이 안되어서 그런건지 확장프로그램과 다르게 CLI 환경에서는 내가 선택한 파일이나, 선택 코드 영역에 대해서 질문이나 분석을 실행하려고 할 때 해당 부분을 자동으로 인식을 못해서 일일히 알려줘야 하는 불편함이 있습니다. 혹시 이 부분은 CLI 환경에서 어떻게 해결해서 사용하고 계신지 궁금합니다.
useEffect를 통해 setErros를 호출해서 errors 상태를 변경하고 있습니다. 상태를 변경하는 건 부수효과가 아니니까 useEffect에서 상태 업데이트는 잘못된 사용이 아닌가 해서요! 저것 때문에 렌더링이 두 번 되기도 하고, https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state 이 내용이랑 같은 내용인 것 같아서요!
프로젝트 A의 마켓 플레이스에서 supabase 플러그인 mcp를 설치하고 사용 했습니다. // A_Project/.claude/setting.json { "enabledPlugins": { "frontend-design@claude-plugins-official": true, "supabase@claude-plugins-official": true } } 그러고 나서 프로젝트 B의 터미널에서 claude 실행 후 /mcp 목록을 보면 supabase mcp가 없는데 제가 무언가 놓친게 있는걸까요? 프로젝트 B에서 /plugin -> Installed를 확인해봐도 없는 대신 MarketPlaces에는 설치 되어있어서 다시 삭제 하고 설치해서 사용 해야 하는건지 ... 프로젝트 단위로만 플러그인들을 적재적소로 설치해서 사용 하고 싶은데