묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JPA 소개 강의 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 1)“JPA와 상속 - 조회” 부분에서,개발자는Album album = jpa.find(Album.class, albumId);JPA는 SELECT I.*, A.* FROM ITEM I JOIN ALBUM A ON I.ITEM_ID = A.ITEM_ID이렇게 처리해준다고 하는데, Album를 찾는거면 from album에 join이 item이 되어야 하는게 아닌건가요? 2)“지연로딩” 부분에서,실제로 team의 속성인 getName()을 사용할 때 생성되는 쿼리가 select * from team이 아니라,select * from team where member_id = ~~ 이런 쿼리가 날라가는게 맞지 않나요?
-
해결됨RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
Pub/Sub & WebSocket 활용한 실시간 알림
SSE & Redis와 Pub/Sub & WebSocket을 비교하고 있는데요.실시간성과 정확성을 위해서라면 Pub/Sub & WebSocket을 더 많이 쓰나요? 알림의 특성상 채팅과 같은 양방향은 아니기 때문에 WebSocket이 적합한 선택인지 궁금합니다.
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
혹시 모든 강의가 720p로 진행될까요?
안녕하세요. 방금 막 구매를 가입한 수강생입니다.첫번째 영상을 보는데 최대 해상도가 720으로 되어있어서요. 이런 안내는 없어서 약간 당황을 했습니다.혹시 모든 강의가 이렇게 진행되는지, 아닌지 먼저 여쭤보고자 질문 드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
메세지 전송 지연의 병목 지점 파악 방법2
client가 main-backend 서버로 Rest 요청(Http 요청)을 보내면, main-backend 서버가 이를 처리한 다음 sub-backend server로 Rest 요청을 보내고 sub-backend 서버는 해당 요청을 redis pub/sub을 이용해서 spring webflux로 구현된 websocket 서버로 전달한 다음 websocket 서버가 해당 요청에 대한 응답을 받아야 하는 client 들에게 메세지를 전달해주는 구조로 구성되어 있을 때, 만약 client가 응답을 늦게 받는 상황이 생겼을 때 어디에서 병목이 생긴 것인지 파악을 할 수 있었으면 좋겠습니다.그래서 main-backend 서버에서 sub-backend 서버로 요청을 보낸 시각, sub-backend 서버에서 이 요청을 받은 시각, 그리고 sub-backend 서버에서 이 요청을 다시 redis pub/sub으로 내보낸 시각, 그리고 websocket 서버에서 이 요청을 받은 시각, 그리고 client로 응답을 내보낸 시각을 다 측정하고 싶은데 어떤 식으로 하는 게 좋을까요?로그를 남긴다면 어떤 식으로 남기는 것이 좋을지 예제 코드가 함께 있으면 좋을 것 같습니다.그 외에 다른 방법이 있다면 더 구체적으로 알 수 있으면 좋을 것 같습니다.시각화도 궁금하지만, 우선 구현 코드부터 알면 좋을 것 같습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
메세지 전송 지연의 병목 지점 파악 방법
안녕하세요 김영한 개발자님강의 감사합니다!강의 내용과 직접적인 연관은 없을 수 있지만 질문이 있습니다...혹시 Spring 서버에서 또 다른 SpringMVC 서버 또는 Spring Webflux 서버로 요청을 보내고또 그 서버에서 Client로 요청을 보내는 구조에서 메세지 전송 지연이 발생했을 때어느 부분이 병목인지 파악하고자 한다면 어떤 방법을 사용하면 좋을까요....?제가 아직 지식이 짧아서 더 경험이 많으신 개발자분께서는 이런 상황일 때 어떻게 하실지 궁금합니다... ㅠ_ㅠRest 요청이 들어온 시점에 해당 시각을 로그로 남기고, 응답을 보내는 시점에 해당 시각을 로그로 남겨서 판단하는 방법 외에 더 좋은 방법이 있을까요......?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
MYSQL 연동오류 원인
application.propertesspring.application.name=apiServer spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/apidb spring.datasource.username=apidbuser spring.datasource.password=apidbuser MySQLCREATE USER 'apidbuser'@'localhost' IDENTIFIED BY 'apidbuser';CREATE USER 'apidbuser'@'%' IDENTIFIED BY 'apidbuser'; GRANT ALL PRIVILEGES ON . TO 'apidbuser'@'localhost' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON . TO 'apidbuser'@'%' WITH GRANT OPTION; 현재 데이터베이스 연결은 잘된거 같은데 연결할때마다 oading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.2025-03-16T15:58:11.685+09:00 INFO 58817 --- [apiServer] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2025-03-16T15:58:11.687+09:00 WARN 58817 --- [apiServer] [ restartedMain] c.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.2025-03-16T15:58:11.855+09:00 INFO 58817 --- [apiServer] [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@6077b0882025-03-16T15:58:11.856+09:00 INFO 58817 --- [apiServer] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2025-03-16T15:58:11.878+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2025-03-16T15:58:11.900+09:00 INFO 58817 --- [apiServer] [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.8.Final2025-03-16T15:58:11.911+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled2025-03-16T15:58:12.010+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2025-03-16T15:58:12.061+09:00 INFO 58817 --- [apiServer] [ restartedMain] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 9.1 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown2025-03-16T15:58:12.353+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-03-16T15:58:12.354+09:00 INFO 58817 --- [apiServer] [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-03-16T15:58:12.369+09:00 WARN 58817 --- [apiServer] [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-03-16T15:58:12.506+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 357292025-03-16T15:58:12.522+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'2025-03-16T15:58:12.526+09:00 INFO 58817 --- [apiServer] [ restartedMain] o.zerock.apiserver.ApiServerApplication : Started ApiServerApplication in 1.469 seconds (process running for 2.034) 이런 에러가 떠서 테스트를 실행해도 데이터가 정상적으로 저장되지 않습니다 무엇이 원인일까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
섹션 1 spring boot 구동 안됨 (JVM 버전 오류)
안녕하세요! Spring boot 구동을 하려던 중 계속 문제가 발생해서 문의 남깁니다. 우선 저는 JVM15를 사용하고 있어서, 수업을 들으며 JVM 17을 다운 받아서 환경 변수 편집까지 완료하여 cmd 에서 jave -version 명령어 실행 시, 그리고 vs code 에서 java -version 명령어 실행 시에 17 버전으로 나오는것을 확인하였습니다.그런데 이상하게 자꾸 JVM 15로 구현되었다고 해서 실행이 되지 않고 해결 해보려하였으나 해결이 되지 않아서 질문 남겼습니다
-
미해결
강의 로딩 안됨
갤럭시 23 사용자 입니다.수강신청한 모든강의가 로딩되질 않습니다.링크된 화면에는 빈 화면만 보입니다.조속한 조치 바랍니다
-
미해결[Level 1] Qt를 이용한 Python 프로그래밍: 입문편
Qt Resource를 사용하는 예제 구현 10:15 구간 질의
안녕하세요~! self.iconCopy = QImage(":/res/copy.png") self.iconCut = QImage(":/res/cut.png") self.iconNew = QImage(":/res/new.png") self.iconOpen = QImage(":/res/open.png") self.iconPaste = QImage(":/res/paste.png") self.iconSave = QImage(":/res/save.png")아이콘 변수와 = 사이에 간격을 일정하게 맞출 때, 한번에 단축키로 하시는 것 같은데, 단축키 좀 알려주실 수 있을까요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
todolist할때 컴포넌트 분리 안했던 것 같은데...
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다.💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다.강의보고 todolist할때 컴포넌트 분리 안했던 것 같은데...dropbox (선택수강)UI구축에 보면 supabase-todo-list vscode에 컴포넌트폴더에 ui컴포넌트 들이 있네요... 혹시 추가 작업을 하셨던 것일까요??
-
해결됨UIUX 포트폴리오 Part.3 - 반응형 웹 포트폴리오
슬라이드 문의드립니다.
안녕하세요. 위의 이미지에 질문을 넣었습니다.강의명은 UIUX 포트폴리오 Part.3 - 반응형 웹 포트폴리오 입니다.답변 부탁드립니다. 감사합니다.
-
해결됨UIUX 포트폴리오 Part.3 - 반응형 웹 포트폴리오
일러스트의 "gif 애니메이션"을 문의드립니다.
"UIUX 포트폴리오 Part.3 - 반응형 웹 포트폴리오" 강의에서"섹션2"에 있는 일러스트의 "gif 애니메이션"을 어떻게 만드셨는지 알려주실 수 있을까요?유투브, 구글, 네이버에서 관련 강의를 찾아봤는데, 못 찾았어요.만약 관련 강의를 아신다면, 알려주셔도 될 것 같습니다.답변 주세요. 감사합니다.
-
미해결[김왼손의 왼손코딩] 프로그래밍 포기자를 위한 챗GPT X 파이썬
PyAutoGUI 설치 방법
PyAutoGUI 설치 방법을 모르겠어요.가르쳐 주실 수 있나요?
-
해결됨그림으로 쉽게 배우는 운영체제
각 메모리의 최대 요구 CPU 리소스는 어떻게 아나요?
이전 강의에서 "SJF 알고리즘은 각 프로세스의 CPU Burst Time을 예측하기 매우 어렵다."고 하셨는데, 최대 요구 CPU 리소스 예측도 CPU Burst Time 예측과 다른 게 없지 않나 생각하거든요. 그런데 여기선 "예측한 최대 요구 CPU 리소스 이상은 절대 안 쓴다!"라고 단정짓고 진행된 것 같아서 뭐가 다른 건지 궁금합니다. 그리고... 이건 제가 공부를 제대로 안 한 건지 모르겠는데요. 한 프로세스에는 그 프로세스가 쓸 프로세스만큼 맨 처음에 할당받고 Waiting으로 넘어가는 거 아니었나요? 생성 시점에 코드랑 데이터를 보면 이 프로세스에 얼만큼 리소스가 필요한지 알 수 있을 텐데... 그러니까 '최대 요구 자원'이라는 개념 자체가 이해가 안 됩니다.
-
미해결해외 빅테크 코딩 인터뷰: LeetCode 포기자의 합격 공부법
조금만 더 고민하면 풀수 있을거 같을때
최대 10분 고민해보고 발상 안되면 넘어가서 발상할 수 있는 방법을 공부하라고 했는데, 막상하다보면 '아 이거 조금만 더 고민하면 해볼 수 있겠다' 란 마음이 들면서 그때부터 이리저리 시도해보고 코드 짜보고 그렇거든요? 이렇게 하다보면 한문제당 시간이 오래 걸리기도 하고요. 못풀때도 있고요. 이런경우 조언 부탁드려요.
-
해결됨공업수학을 위한 중학, 고교수학
전기과 학생입니다.
이 강의에서 배우는 수학이 전기 공부 할 때 필요한 것들인가요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
Bracket Pair Colorizer - 비주얼 스튜디오
이제 더 이상 기능이 지원되지 않는 것 같은데 대안이 있을까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Argo CD Image Updater를 이용한 수업 이슈(2232) ImagePull
처음 강의부터 쭉 따라오신 분들에 한해서 제가 발견한 이슈사항 공유하고 싶어서 글을 남겼습니다. 저의 경우는 Repository를 전부 제 개인껄로 옮겨서 사용중인데요. 문제는 포크를 하지않고 제가 공부하는 Repo가 따로 있어 거기에 모아 놨다는게 문제입니다. github pull할때 path가 미친듯이 짜증나더라구요.pull하는 기준이 제가 git으로 관리하는 폴더들이 싸드리 싹싹 똑같이 생성되기 때문에 접근이 엄청 힘들었는데요. 그래서 이짓을 해야 했습니다. pipeline { agent any tools { gradle 'gradle-7.6.1' jdk 'jdk-17' } parameters { // 배포 환경 선택 choice(choices: ['dev', 'qa', 'prod'], name: 'PROFILE', description: '배포 환경 선택') } environment { // 본인의 username으로 하실 분은 수정해주세요. DOCKERHUB_USERNAME = '비밀' GITHUB_URL = '입니다' APP_VERSION = '1.1.1' BUILD_DATE = sh(script: "echo `date +%y%m%d.%d%H%M`", returnStdout: true).trim() // 위에 date 포맷 오류가 있어요. %y%m%d.%H%M%S가 맞습니다) TAG = "${APP_VERSION}-" + "${BUILD_DATE}" // 소스코드 위치 SOURCE_DIR = "kubernetes/일프로/project/kubernetes-anotherclass-api-tester-main" // 배포 및 도커관련 위치 KUBE_DIR = "kubernetes/일프로/kubernetes-anotherclass-sprint2-main" // 실습 넘버링 CLASS_NUM = '2232' } stages { stage('소스파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "${SOURCE_DIR}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) sh "pwd" sh "ls -al" } } stage('소스 빌드') { steps { // 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644) sh "pwd" sh "ls -al" sh "cd ./${SOURCE_DIR} && chmod +x ./gradlew" sh "cd ./${SOURCE_DIR} && gradle clean build" } } stage('릴리즈파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "${KUBE_DIR}/${CLASS_NUM}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) } } stage('컨테이너 빌드 및 업로드') { steps { // jar 파일 복사 sh "cp ./${SOURCE_DIR}/build/libs/app-0.0.1-SNAPSHOT.jar ./${KUBE_DIR}/${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar" script{ // 도커 로그인 withCredentials([usernamePassword(credentialsId: 'docker_password', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) { sh "echo " + '${PASSWORD}' + " | docker login -u " + '${USERNAME}' + " --password-stdin" } // 도커 빌드 및 업로드 if (DOCKERHUB_USERNAME == "1pro") { TAG = "1.0.1-231220.175735" // 1pro useranme 수강생을 위한 고정 태그명 sh "docker build ./${CLASS_NUM}/build/docker -t ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } else { // 도커 빌드 sh "docker build -t ${DOCKERHUB_USERNAME}/api-tester:${TAG} ./${KUBE_DIR}/${CLASS_NUM}/build/docker" // [2] 잦은 배포 - versioning 무의미, 계획된 배포 - versioning 필수 sh "docker push ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } // 도커 이미지 삭제 sh "docker rmi ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } } post { always { // 도커 로그아웃 sh "docker logout" } } } } } 삽질을 몇번하니 이젠 뭐 대충 어디서 문제가 발생하는지 보이더군요... 뭐 서두는 여기까지... 급하신분은 여기부터 보시면 됩니다.싱크가 제대로 안될 경우 해결방법detail에서 annotations 작성시 image path를 잘 적었는지 확인(1pro/api-tester -> ${docker username}/api-testerrepo URL 본인 것인지 확인PATH 경로 잘 작성했는지 확인(저처럼 fork를 하지않고 특정 레포에 넣으신분들...) image pull이 안되는 경우 해결방법Jenkinsfile을 뒤져서 DOCKERHUB_USERNAME 및 GITHUB_URL변경했는지 확인2232/deploy/helm/api-tester 폴더에 들어가 values.yaml과 values-xx.yaml파일들의 images가 1pro-/api-tester가 아닌 ${docker username}/api-tester인지 확인Docker Hub에 접속해 v1.0.0으로 태그가 달려있으면 삭제 후 212 List View의 container-build했던 부분의 Jenkinsfile에서 image생성시 사용한 태그가 v1.0.0인지 확인해보고 GitHub에 들어가 v를 삭제한 1.0.0으로 커밋한 후에 컨테이너 빌드를 다시 시작(이 때 CI/CD서버에 docker에 로그인이 되어 있어야합니다.) 저는 이정도로 해결이 되었습니다. 아름다운 결과...
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
서버 컴포넌트에서의 상호작용
안녕하세요 강사님. 양질의 강의 잘 듣고 있습니다. 다름이 아니라 클라이언트 컴포넌트와 서버 컴포넌트 개념 설명에서, "상호작용(Interaction)이 지속적으로 발생하는 컴포넌트는 클라이언트 컴포넌트로 작성해야 한다" 라고 이해했었습니다. 그런데 리뷰를 작성하는 기능 또한 상호작용이 지속적으로 발생하는 것이 아닌가 하는 의문이 들었습니다. 제가 이해를 잘 못 한 부분이 있는 걸까요? 아니면 서버 컴포넌트에서도 어느정도 상호작용을 처리할 수 있는건가요?
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
import Hero from './Hero' 오류 문의
강의에서 말씀하신대로 자동완성을 이용하여서 './Hero' 가 되었는데, 오류가 납니다.Already included file name ~~ Root file specified for compliation 이라고 뜨는데 왜 그런건가요?Error lens에서 해당 오류를 출력합니다.