묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
강의 챌린지 참여
안녕하세요. 강의를 이전에 구매하였는데 해당 강의가 챌린지 형태로 진행한다고 들었습니다.기존 구매자는 챌린지에 참여할 수 없을까요?
-
미해결비전공자 혼자서 하루 만에 수익화 앱 출시하기
스포트라이트
쳇gpt에 요구사항과 핵심기능 입력후에스포트라이트로 진행하셨는데, 맥북환경 아닌 윈도우 환경에서는 어떻게 해야하나요?
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
뭘 하고 있는지 모르겠네요.
돈내서 책사고돈내서 챌린지 참가하고돈내서 20달러 구독하고에러와 사투만 벌이고 있으니책 불질러 버리고 싶네요.
-
해결됨[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
인프런 피그마 교육계정 연장
안녕하세요. 피그마 계정을 인프런 교육용계정으로 승인받아 사용하고 있었습니다. 초반에 너무 짧게 설정을 해서 그런지, 아직 강의를 다 못들었는데 6일이 남았다고 해서요.혹시 추가 연장이 가능한가요? 확인부탁드립니다.감사합니다.
-
미해결한국인이 좋아하는 속도로 때려넣는 파이썬
보조 기억 장치와 보조기억장치가 바뀐거 같습니다.
[프로그램 설치 오류 문의]프로그램 설치 오류 발생시 사용중인 컴퓨터의 환경에 대한 상세 스크린샷을 함께 제공해 주셔야 합니다!또한, 강의에서 소개한 내용과 완전히 동일한 방식으로 설치를 진행하셨는지도 재확인 부탁드려요! [코드 실행 오류 문의]반드시 코드와 에러메시지의 스크린샷을 첨부해 주셔야 합니다!둘 중 하나라도 누락되면 도움을 드릴 수 없습니다! [그 외 오류 문의]그 외 오류가 발생한 경우 최대한 스크린샷이나 코드 등, 상황을 전달할 수 있는 자료를 수집하시어 함께 제공해 주세요.
-
해결됨Cursor AI로 만들면서 배우는 Web & Javascript
미업로드된 영상강의 업로드 일정이 궁금합니다.
강사님, 안녕하세요. 좋은 강의를 열어주셔서 감사합니다!현재 업로드한 강의는 모두 들었으나, 아래 영상은 미제공되어 업로드 일정 문의드립니다.1. 8/30 업로드 예정이나 미업로드된 강의(54, 55, 56, 57)2. 영상 편집 중으로 미업로드된 강의(59)3. 8/31 업로드 예정이나 미업로드된 강의(62, 63, 64, 65, 66, 67, 68, 69)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join과 영속화와 OSIV의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]fetch join의 동작에 대하여 의구심이 들어 찾아봤더니 "fetch join의 경우 SQL에서 사용하는 join의 종류가 아닌 JPQL에서 성능 최적화를 위해 제공하는 기능인데요.fetch join은 조회하는 주체가 되는 entity 외에 fetch join이 걸린 연관 관계가 있는 entity까지 함께 select 하여 영속화합니다." 라고 합니다.영속성 컨텍스트는 기본적으로 트랜잭션 범위내에서 생성되고 종료되는거 할거같은데, 어떻게 컨트롤러에서 트랜잭션이 걸려있지 않은 메서드를 바로 호출해서 사용해도 이러한 것이 가능한지 궁금해서 찾아보니 OSIV라는게 있더군요.OSIV는 기본적으로 트랜잭션이 시작 후 종료되어도 일정 부분은 영속성 컨텍스트를 웹요청 전체에 열어둔다.때문에 OSIV를 끄면 지연로딩같은건 컨트롤러에서 이루어지게 코딩해두었으니 예외가 뜬다.근데 여기서 문제는 OSIV를 끄면 fetch join도 작동안해야할거같은데 작동을 합니다. 레포에 눈에 보이지 않는 트랜잭션이라도 걸려있는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
자신 필드에도 get으로 접근하는 이유가 있을까요?
[질문 내용]OrderItem에서 가격 총합을 구할 때 자기 자신의 필드임에도 return orderPrice * count;이렇게 바로 쓰기 보다는public int getTotalPrice() { return getOrderPrice() * getCount(); }get으로 가져오시더라구요. 그렇다면 Order에서는//==조회 로직== public int getTotalPrice() { int totalPrice = 0; for (OrderItem orderItem : orderItems) { totalPrice += orderItem.getTotalPrice(); } return totalPrice; }for문에 orderItems에도 getOrderItems()로 하셨었나? 하고 봤더니 이거는 바로 접근을 하시는데자기 필드를 get으로 접근 하는 것이 조금 어색한데, 혹시 이유가 있을까요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
UseCase 메서드 단위에 대한 Best Practice
안녕하세요! 토비님.헷갈리는 개념이 하나 있어서 여쭤보고 싶습니다.바로 헥사고날 아키텍처에서 UseCase의 책임 범위인데요.우선 정답은 없다는 것은 알고 있습니다. 다만 Best Practice나 권장되는 방법이 있는지, 그리고 토비님의 고견이 궁금하여 질문드리게 되었습니다. 기능 단위로 UseCase 인터페이스 분리하기 vs 연관된 기능은 UseCase 인터페이스에 묶음으로 제공하기(메서드별로)입니다. 전자는 SRP가 매우 엄격하게 준수되고, 테스트 용이성, 개별 인터페이스별로 정책을 다르게 적용할 수 있다는 장점들이 있지만 과도하게 인터페이스화를 하다 보니 관리할 포인트가 많아져 복잡해진다는 게 단점인 것 같습니다. 후자는 SRP가 엄격하게 준수되지 않더라도, 관련된 기능을 응집도 있게 관리하기 때문에 테스트 용이성이 조금 떨어지고, 일관된 정책을 관리하거나 인터페이스가 비대해질 수도 있다는 단점이 있지만, 응집도 있게 관리하여 유지보수에는 편한 장점이 있는 것 같습니다. 코드를 예시로 보면 아래처럼 콘서트를 조회한다고 했을 때, 일반적으로 PK를 기반으로 조회하지만, 아래와 같이 콘서트명도 unique하고, 가수도 1개의 진행 중인 콘서트만 가지고 있을 수 있을 때 조회 조건이 Id, Name, ArtistName으로 분류될 수 있다고 예시를 들어보겠습니다.public interface GetConcertUseCase { ConcertResult findById(Long concertId); ConcertResult findByName(String name); ConcertResult findByArtistName(String ArtistName); ConcertResult findByIdWithSchedules(Long concertId); // Aggregate Member인 ConcertSchedule 목록 정보도 포함하여 조회 }위에처럼 구성하는 게 후자 방식이고 응집도가 높다고 생각합니다. 그런데 해당 방식은 유스케이스가 비대해질 수 있고, 단일 책임 원칙에서 벗어날 수 있다는 의견 때문에 조회 목적별로 유스케이스 분리하는 것을 권장하는 의견도 있습니다. (전자 방식)public class GetConcertByIdUseCase { ... } public class GetConcertByNameUseCase { ... } public class GetConcertByArtistUseCase { ... } public class GetConcertByIdWithSchedulesUseCase { ... } 정답은 없어서 프로젝트 규모나, 각자의 스타일, 기능 분석에 의해 정해지겠다만, 보편적으로 이런 경우 어떻게 접근하는 게 Best Practice인지 감이 잡히질 않아 질문드리게 되었습니다.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
스냅샷 읽기
cursorReader에서 스냅샷을 읽어서 동일한 스탭에서 데이터가 변경되어도 영향을 받지 않는다 하셨는데,이거는 mysql의 repeatable read와 관련된 스냅샷인걸까요? 아니면 배치 자체에서 제공하는 스냅샷인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Distinct 사용 전 결과에 대한 의문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] { "orderId": 4, "name": "userA", "orderDate": "2025-09-24T02:20:27.580803", "orderStatus": "ORDER", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 }, { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 2 } ] }, { "orderId": 4, "name": "userA", "orderDate": "2025-09-24T02:20:27.580803", "orderStatus": "ORDER", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 }, { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 2 } ] }Distinct 사용 전 결과는 위와 같이 한 주문에 대해서 두 개의 결과가 나오는건 이해했습니다. 하지만 둘다 OrderItem 배열에 2개의 값이 각각 들어가있습니다.제 생각으로는 한쪽에는 JPA1 BOOK만,다른 한쪽에는JPA2 BOOK만 들어있어야하지 않나? 생각이 드네요. 실제 DB에서의 결과와 동일해야하는거 아닌가요?즉, DB에서의 결과 처럼 아래와 같이 반환되어야 맞지 않나요? { "orderId": 4, "name": "userA", "orderDate": "2025-09-24T02:20:27.580803", "orderStatus": "ORDER", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 } ] }, { "orderId": 4, "name": "userA", "orderDate": "2025-09-24T02:20:27.580803", "orderStatus": "ORDER", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderItems": [ { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 2 } ] }
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
레포지토리 계층에서의 트랜잭션에 대한 의문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]본래 DB에 쿼리를 날리는 행위는 트랜잭션 안에서 이루어져야하는데본 강의부터 뒤쪽 강의까지 컨트롤러단에서 직접 레포지토리 메서드를 호출하여 코드를 작성하는걸 볼 수 있습니다.제가 알아본 바로는 아래와 같다고 합니다.쓰기 작업: 반드시 트랜잭션 필요.조회 작업: 트랜잭션 없어도 가능. 단, 지연 로딩 시 트랜잭션 없으면 예외 발생.실무 규칙: Repository는 트랜잭션 안 열고, Service 계층에 @Transactional로 비즈니스 단위 트랜잭션 관리.읽기 전용 조회 최적화: @Transactional(readOnly = true) 사용 → 성능 최적화 + 예외 방지.근데 뒤쪽 강의에서는 fetch join을 사용하니 지연 로딩에 대한 예외가 발생안한다고 쳐도현재 이 강의 초반에 /api/v1/simple-orders 에 대한 메서드에서는 실제로 지연 로딩에 의한 쿼리를 호출합니다.그렇다면 결국 트랜잭션이 없는 상태에서 이루어진 것이니 LazyInitializationException 예외가 발생해야하는거 아닌가요?그리고 보통 실무에서 컨트롤러에서 fetch join 쿼리 메서드(트랜잭션이 걸려있지 않은) 등을 레포지토리에서 바로 호출하는 경우가 흔한가요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
git action실행 안됨
안녕하세요 강사님!ch03.8 git action 실행 강의 수강 중 입니다.강의안에 나온대로 디렉토리 설정 완료하고, master 파일의 버킷명도 제 고유버킷명으로 잘 변경했습니다. 이후 git push를 진행했고 push도 잘 된것을 깃허브에서 확인했는데요.문제는 git actions에 아무것도 올라오지 않는다는 것 입니다. 이에 chat-gpt를 통해 문제 원인을 분석해보니📌 원인master.yml 파일이 레포지토리 루트가 아니라kafka-producer/kafka-producer/.github/workflows/master.yml 처럼 하위 디렉토리 안에 들어 있었기 때문이에요.GitHub Actions는 오직 레포 최상위(repo-root/.github/workflows/) 위치만 인식합니다.하위 폴더 안에 있으면 파일이 있어도 무시돼서, Actions 탭에 아무것도 안 보였던 거예요.이와 같았습니다.chat-gpt의 수정대로 레포 구조를 바꿔 git push를 진행하면 actions에 워크플로우가 뜨고 빌드가 됩니다. 하지만 강의안에 나온 구조와는 상이해보여 질문드립니다. 정확한 문제의 원인과 해결 방안을 알 수 있을까요? 사진은 강의안대로 구성한 제 디렉토리 구조 입니다. chat-gpt가 제시한 해결 방안입니다. 이대로 했을 때 actions 탭에 워크플로우 뜸.
-
미해결[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
안드로이드 위치 권한 이슈 2가지 문의
❗질문 작성시 꼭 참고해주세요에러 메세지에서 단서를 찾을 수 있는 경우가 많습니다. 에러 메세지를 읽고 한번 검색해보시는것을 추천드립니다.질문글을 작성하실때는, 현재 문제(또는 에러)와 코드나 github을 첨부해주세요.개발중인 OS, ReactNative, Node 버전 등의 개발환경을 알려주셔야합니다.에러메세지는 일부분이 아닌 전체 상황을 올려주세요. 일부만 보여주시면 답변이 어렵습니다. (에러 일부만 자르거나 일부만 복사하지말아주세요) 안드로이드의 경우 앱을 열어놓고 설정화면으로 넘어간 다음으로 경로 권한을 내리고 다시 앱으로 돌아가면 앱이 재실행되어 useAppState 가 초기화되어 의도한 동작을 하지 않습니다. 1번의 경우에 앱을 다시 백그라운드에 두고 다시 앱을 켜면 의도한 동작이 실행되는데 이상하게 getCurrentPosition 의 에러 콜백이 무한으로 돕니다....
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
노션 파일 업로드가 가능한가요?
안녕하세요. 노션 연동까지 잘 들었습니다.노션 API를 통해 파일을 업로드할 수 있을까요?노션 페이지에 텍스트 작성은 잘 되는데 파일 첨부가 안되네요.레딧 보니까 되는것 같던데, 며칠동안 고민해도 안되네요.
-
미해결
코딩 1:1 클래스 “코드스케이프” 모집
🌟 코딩을 탐험하는 CodeScape(코드스케이프) 🌟 안녕하세요 코드스케이프 스터디입니다! 2학기를 맞이해서 1학기에 이어 새학기 C언어, JAVA 4주 마스터 스터디와 응용 심화 스터디를 준비하고 있습니다! 중간고사 기간 전에 빠르게 기본기 점검, 마스터하고 싶은 분들 모집합니다! 자세한 커리큘럼은 노션 통해서 확인 해주세요~! 📖 <프로그램 및 커리큘럼 소개>https://polar-zydeco-01f.notion.site/CodeScape-17eab7600a9d805bb0a2e0b474d895a8?pvs=4 📝모집기간 및 대상 📍모집 기간 : 09.01 (월) ~ 09.21 (일)📍진행 기간 : 4~5주차 커리큘럼으로 준비중 (클래스마다 조금씩 상이할 수 있음.)📍모집대상 ✅ 서울권 대학생(휴학생도 환영)✅ 서울 거주자 전공자 & 비전공자 상관 없음!✅ 새학기 시작하고 C Langauge 혹은 Java 개념 4주안에 기본기 쌓고 싶은 분!✅ C Langauge 혹은 JAVA 주력언어로 희망하는 개발자 지망생! (심화반은 사이드 프로젝트 진행예정.)✅ 6주차 커리큘럼으로 준비중 (스터디마다 조금씩 상이할 수 있음.) ✉ <신청 및 문의>📤신청링크: https://forms.gle/Nwzj5mqPVDxHAvLr9📤문의링크: 김지석 010-2973-4106
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
SceneType 질문
강의를 다 들어서 이제 첫 단추부터 풀어보려고 게임씬 스크립트 열고 분석하려 했는데 SceneType 변수가 있길래 뭐하는 코드지 하고 검색해 봤는데 해당 변수를 활용하는 부분이 안보여서 어떤 로직인지 잘 모르겠어요 해당 변수는 어떤 용도로 작성됐나요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
두 수의 차이와 가위바위보 숫자 크기에 따라 처리했습니다.
안녕하세요! 강의 보면서 복습도 할 겸, 열심히 지식을 얻어가고 있습니다.아무튼, 본론으로 돌아가서 가위바위보 규칙을 생각하고 두 사람의 결과값에 따라 차이를 구하고 분기를 나눠보았습니다.우선 가위 ( 1 ), 바위 ( 2 ) , 보 ( 3 )비기는 경우 = 0가위와 바위의 차이 = 1바위와 보의 차이 = 1가위와 보의 차이 = 2이렇게 숫자로 규칙을 작성하고 보니, 큰 수와 작은 수를 정렬하고 서로의 차이를 구하면 분기를 나눌 수 있을 거 같았습니다.따라서, 차이가 1인 경우엔 큰 수를 가진 사람이 이기게 되고 차이가 2인 경우엔 작은 수를 가진 사람이 이기도록 설정할 수 있을 거 같았습니다.무승부의 경우에는 차이가 0이고 서로의 값이 같다면 무승부로 처리하면 되기에 따로 처리하고 아래처럼 작성하였습니다.function solution(n, A, B) { let answer = ""; for (let i = 0; i < n; i++) { const [a, b] = [A[i], B[i]]; const diff = Math.max(a, b) - Math.min(a, b); if (diff === 0) { answer += "D\n"; } if (diff === 1) { if (a > b) { answer += "A\n"; } else { answer += "B\n"; } } if (diff === 2) { if (a > b) { answer += "B\n"; } else { answer += "A\n"; } } } return answer; } console.log(solution(5, [2, 3, 3, 1, 3], [1, 1, 2, 2, 3])); 이 경우에 시간복잡도가 커지지만, 두 사람의 데이터만 처리하면 될 것이라 판단하고 괜찮을 거 같다고 생각하여 작성해 보았는데 ..만일 코테에서 작성한다면 시간 초과라던가 그런 문제가 있을 수 있을까요?
-
미해결Airflow 마스터 클래스
macOS에서 docker 설치
안녕하세요 mac에서 docker 설치하려고 하는데 apt-get command not found가 뜹니다. 찾아보니 apt 명령어는 macOS에서 동작 안한다고 하는데 어떻게 진행하면 될까요?
-
미해결김영한의 실전 데이터베이스 - 기본편
order_date 조건에 비교 연산자 대신에 와일드카드 사용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]조인 종합 실습 파트에서 주어진 문제를 해결할 때,where u.address LIKE '서울%' AND o.order_date LIKE '2025-06%';으로 작성했을 때 똑같이 동작하는 것 같아서 질문합니다. 이렇게 사용했을 때는 또다른 문제가 있을까요?