MySQL의 기본 데이터 저장 경로는 /var/lib/mysql 이므로, 직접 만든 볼륨에 /data 경로가 아닌 /var/lib/mysql 을 지정해주셔야 합니다. 도커 컴포즈 파일 내 Volumes-top-level-elements 설정 시, sakila_volume: 이하에 external: true 를 지정하지 않으면, {project_name}_db-data 인 이름의 볼륨을 찾고 없으면 해당 볼륨을 생성합니다.(예: sakila-mysql_sakila_volume ) 따라서 external: true 를 지정하거나, name: sakila_volume 을 지정해야합니다. see → https://docs.docker.com/reference/compose-file/volumes/
섹션5 수강하고 있는데 혹시 서비스 테스트코드나 레파지토리 테스트코드 실습파일은 어디있을까요? 글씨가 작아서 따라 치기가 어려워서요. 돋보기로 하면 글자가 깨져서요. 상품 목록/등록 강의를 듣고 있습니다. 테스트 코드에서 아래를 실행하면 이런 에러가 납니다.(참고로 db는 연결되어있어요. springboot 돌리면 tomcat start 8080나옵니다.) Cannot invoke "com.example.backend.mallapi.domain.ProductImage.getFileName()" because "productImage" is null 아래는 코드입니다. 참고로 upload 파일에도 파일이 2개가 있는상황이여서 productImage가 null일 이유가 없다고 생각하는데 왜나는지 모르겠습니다.
카일님 안녕하세요. 강의 아주 잘 듣고 있습니다 감사합니다 :) 총 정리 문제 2번에서 추가 질문 드립니다. 제가 처음 풀때 문제를 잘못이해하여, type1 별 가장 많이 포획된 포켓몬 이름과 횟수를 각 type1 TOP 1 들을 구하려고 했습니다. MAX (COUNT) 라는 말도 안되는 쿼리를 작성하면서 고군분투 하였고, 결국 못 풀었습니다. 다행히 채점할때 카일님이 의도하신 출제방향으로는 답이 나와있는 상태여서 이해는 하였습니다 만. ! 커머스라고 가정할 때 각 카테고리별(type1) , 가장 많이 팔린 제품(kor_name), 최다 판매수(cnt) 를 구해야 한다면, 제가 풀지못했던 문제로 해결할 수 있을 것 같아서요. type1 별로 포획량 TOP 1을 구하는 쿼리는 어떻게 작성하면 좋을 까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] (base) mirae@mirae-MacBookPro jpashop % ./gradlew clean build Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details > Task :test JpashopApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1773 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:276 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:191 1 test completed, 1 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///Users/mirae/Desktop/study/SPRING_BOOT/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 10s 8 actionable tasks: 8 executed (base) mirae@mirae-MacBookPro jpashop % 같은 질문에서 해결 방안을 다 따라해봤지만 계속 오류가 납니다. gradlew 버전 8.5 , JDK 버전 21.0.1 이고 intel macBook입니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 해당 강의와 관련된 내용을 학습하던 중에 prestartAllCoreThreads() 외에도 prestartCoreThreads() 라는 메서드가 존재하는 것을 확인했습니다. 제가 인지한 두 메서드의 차이점은 다음과 같습니다. |메서드 |prestartAllCoreThreads()|prestartCoreThreads()| |---------------|------------------------|---------------------| |생성되는 스레드 수 |전체 코어 스레드 수 |1개씩 | |생성된 스레드의 상태|active 아님 |active | 여기서 후자의 경우 1개씩 생성한다는 점은 이해가 가는데, 왜 두 메서드의 경우에서 생성한 스레드의 상태가 active냐/아니냐로 차이가 나는지는 모르겠습니다. 챗지피티와 이에 대해서 대화를 좀 나눴는데 그 내용도 이해가 되지 않습니다. 다수의 스레드가 동시에 getTask() 를 호출하면 모두 블로킹 상태가되어 락을 기다리지 않기 때문에 active 카운트가 증가하지 않는다.. 라고 하는데 이해가 가지 않습니다. 실행 결과 // case1. 생성된 스레드가 active 상태가 아님 poolExecutor.prestartAllCoreThreads(); printState(executorService); //15:31:40.628 [ main] [pool=1000, active=0, queuedTasks=0, completedTasks=0 // case2. 생성된 스레드가 active 상태임 poolExecutor.prestartCoreThread(); printState(executorService); //15:17:53.579 [ main] [pool=1, active=1, queuedTasks=0, completedTasks=0
select page_path , count (*) as page_cnt , count ( distinct sess . sess_id ) as unique_page_cnt from ga . ga _sess_hits his join ga . ga _sess sess on his . sess_id = sess . sess_id where visit_stime >= ( '2016-11-01' :: date - interval '30 days' ) and visit_stime < '2016-11-01' and hit_type = 'PAGE' group by page_path order by 2 desc ; 저는 위와 같이 쿼리를 작성했습니다만, 교육 자료에서 temp_01, temp_02로 각각 나눠서 page_cnt와 unique_page_cnt를 구하는 것에 어떠한 장점이 있어서 교안의 쿼리 대로 작성하는지 궁금합니다. 제가 단순히 생각하기에는 비효율적으로 보여서요! 제 쿼리가 비효율적일 수도 있는데, 장단점을 들어보고 싶습니다.
dbeaver 처음 테스트해볼때 SELECT * FROM emp; 해도 전 불려오는 데이터가 없습니다.. 당연하죠 테이블을 넣은적이 없으니..ㅠㅠ 테이블은 SQL 기초때껄 사용하면 되나요?? 이런것에 대한 설명 보완이 필요합니다. SQL Error [942] [42000]: ORA-00942: table or view does not exist Error position: line: 1 pos: 14
AtomicIntegerFieldUpdater 기본 구현 페이지의 코드에서 마지막 System.out.println() 부분을 보면은 new value라고 하고 instance.getMyFiled()를 하고 Updated value에도 instance.getMyFiled()를 합니다 그런데 옆에 주석에 new value는 42, updated value는 43으로 나오는데 실제로 실행해보니 저는 둘 다 43으로 나오더라구요 표기 오류가 맞는거겠죠?
수업과 같이 npm에 배포하고 제가 만든 ui를 다운받아 import하는 과정에서 해당 이미지와 같이 node_modules에서 export가 나타납니다. 1) lib파일과 index.ts파일을 myapp 폴더로 직접 import했을때는 정상적으로 작동하였습니다. 2) 해당 수업에서 codecamp-ui가 npm 사이트에 아직 배포중이기에 그것도 시험삼아 다운받아서 import하였지만 똑같은 오류가 나타났습니다. 3) node_modules 파일 삭제하고 다시 yarn install로 다운받았지만 같은 오류가 나타났습니다. 그 전 수업까지는 동일하게 오류없이 진행했습니다. 무엇이 문제일까요?
섹션 5. 상품 API 서버 구성하기- 파일업로드 섬네일처리 쪽에서 질문있습니다. application.properties 파일안에서 org.zerock.upload.path=upload 이 구문에 대해서 질문있습니다. 위 사진에서 빨간 네모박스처럼. java 아래부터 mallapi폴더 전까지 폴더명들이 있는데요. org, zerock 혹시. upload전까지 폴더명과 java 아래부터 mallapi폴더 전까지 폴더명이 같아야 하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] em.find()로 가져온 후 이름을 바꾸고 commit 이전에 em.find()로 똑같은 id의 이름을 조회해서 이름을 확인했을 때 영속성 컨텍스트에서 1차 캐쉬로 조회하기에 바뀐 이름으로 조회되는 것이 맞나요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 이번에 강의를 구매한 학생입니다. 해당 강의가 실제로 현업에서 사용될 수 있는 방법들인가요? 해당 강의를 수강하고, 이를 바탕으로 프로젝트에 녹여내볼려고 하는데 현업에서 사용하지 않는 방법들이라던가 교육용 강의라면 고민을 좀 해봐야 될 것 같아 문의글 남깁니다 감사합니다.
Q. npm i react-copy-to-clipboard 패키지 설치시 아래와 같은 오류가 발생합니다. > npm i react-copy-to-clipboard npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm error npm error While resolving: mbti-contents-platform@0.0.0 npm error Found: react@19.0.0 npm error node_modules/react npm error react@"^19.0.0" from the root project npm error npm error Could not resolve dependency: npm error peer react@"^15.3.0 || 16 || 17 || 18" from react-copy-to-clipboard@5.1.0 npm error node_modules/react-copy-to-clipboard npm error react-copy-to-clipboard@"*" from the root project npm error npm error Fix the upstream dependency conflict, or retry npm error this command with --force or --legacy-peer-deps npm error to accept an incorrect (and potentially broken) dependency resolution. npm error npm error ... 강의 들으며 문제가 발생했고, 직접 해결한 방법을 공유합니다. 🎯 오류 원인 분석 오류 메시지를 분석하면, react-copy-to-clipboard@5.1.0 패키지가 React 19을 지원하지 않기 때문에 설치에 실패한 것입니다. 🎯 1. 오류 원인 분석 오류 메시지를 보면: npm error Found: react@19.0.0 npm error Could not resolve dependency: npm error peer react@"^15.3.0 || 16 || 17 || 18" from react-copy-to-clipboard@5.1.0 📌 원인 프로젝트에 React 19.0.0 이 설치되어 있음. 하지만 ** react-copy-to-clipboard@5.1.0 **은 React 19을 지원하지 않음 (React 15~18까지만 지원). 📌 결과 react-copy-to-clipboard 는 react@19 와 호환되지 않아서 설치할 수 없음. 강사님은 18버전으로 진행, 실습 시 vite로 최신버전이 19버전으로 설치됨 Soultion ✅ react-copy-to-clipboard 대신 다른 패키지 사용 (추천) 현재 react-copy-to-clipboard 는 React 19을 공식적으로 지원하지 않음 . 대신 React 19에서 정상적으로 동작하는 최신 패키지 를 사용하는 것이 좋음. 대체 패키지: @uidotdev/usehooks 이 패키지는 useCopyToClipboard() 훅을 제공하며, React 19에서도 사용 가능 . npm i @uidotdev/usehooks 📌 사용 예시 ( useCopyToClipboard 활용) import { useCopyToClipboard } from "@uidotdev/usehooks"; export default function CopyButton() { const [copiedText, copy] = useCopyToClipboard(); return ( <div> <button onClick={() => copy("Hello, World!")}>복사하기</button> {copiedText && <p>복사 완료: {copiedText}</p>} </div> ); } 저는 위 방식을 통해 해결하였습니다. 더 좋은 방법이 있으면 공유해주세요.