이번 미션을 진행하면서 궁금한 점이 있어 질문드립니다. 이전 강의에서 프로젝트를 처음 시작시 보통 초기화(/init)하여 claude.md파일을 생성한다고 했는데 이번 미션에는 초기화없이 Plan Mode로 계획을 수립/구현하는데 그럼 구현 후 초기화하면 되는 걸까요? 초기화 하는 시점이 궁금합니다. 그리고 만약 구현 후 초기화하면 코드베이스를 분석하여 claude.md 파일을 생성하면 그 이후에 수정사항은 Plan Mode가 아닌 claude.md 파일에서 지침을 수정하면 이전 컨텍스트를 기억해서 수정하는게 아니라 claude.md 파일을 분석해서 수정하니까 token 소모가 덜 들것 같은데 claude.md 파일을 수정해서 구현을 요청해도 되는 걸까요?
안녕하세요 토비님!! 강의를 완강하고 제 프로젝트를 리팩토링하면서 피드백받고싶은점이 생겨 질문글을 올립니다. Repository Port를 기술에 종속시키지 않기 위해 Adapter에서 JPA, MyBatis, QueryDSL을 조합하는 구조를 선택했는데, 이 설계 방향이 적절한지 조언을 구하고 싶습니다. 현재 구조 core/ └── domain/ └── application/ └── required/ ← Port 인터페이스 └── ~Repository adapter/ └── persistence/ ├── ~RepositoryAdapter ← Port 구현체 ├── ~JpaRepository ← Spring Data JPA └── ~MybatisMapper ← Mybatis 매퍼 인터페이스 의존 관계 [Service] → [Repository] ←impl― [RepositoryAdapter] → [JpaRepository] → [MybatisMapper] → [JPAQueryFactory] (core) (core) (adapter) (adapter) 예시 @Repository @RequiredArgsConstructor public class ItemRepositoryAdapter implements ItemRepository { private final ItemJpaRepository itemJpaRepository; private final ItemMybatisMapper itemMybatisMapper; @Override public List<Item> findBySearchRequest(ItemSearchRequest request) { return itemMybatisMapper.findBySearchRequest(request) .stream() .map(Item::from) .toList(); } @Override public List<Item> saveAll(List<Item> items) { return itemJpaRepository.saveAll(items); } } @Repository @RequiredArgsConstructor public class AuctionRepositoryAdapter implements AuctionRepository { private final JPAQueryFactory jpaQueryFactory; private final AuctionJpaRepository auctionJpaRepository; @Override public void deleteAllByRegionAndRealmId(RegionType region, Long realmId) { QAuction qAuction = QAuction.auction; BooleanBuilder filter = new BooleanBuilder(); filter.and(qAuction.region.eq(region)); if (realmId == null) { filter.and(qAuction.realmId.isNull()); } else { filter.and(qAuction.realmId.eq(realmId)); } jpaQueryFactory.delete(qAuction) .where(filter) .execute(); } @Override public int saveAll(List<Auction> auctions) { if (auctions.isEmpty()) return 0; return auctionJpaRepository.saveAll(auctions).size(); } } 이 구조를 선택한 이유 동적 쿼리, 벌크 연산 등 JPA만으로 해결하기 어려운 케이스가 있어 MyBatis와 QueryDSL을 병행 사용하고 있습니다. 일반적인 방식인 Port 인터페이스가 Spring Data JPA Repository를 상속하는 구조를 채택하지 않은 이유: MyBatis나 QueryDSL 기반 구현체를 만들 수 없음 CustomRepository 인터페이스를 별도로 만들어야 하는 복잡도 증가 현재 방식의 장점: Port 인터페이스가 순수 Java 인터페이스로 유지됨 RepositoryAdapter에서 상황에 맞는 기술을 자유롭게 조합 가능 추가 인터페이스 없이 단순한 구조 유지 저는 현재 구조가 의존 관계도 외부에서 내부로 향하고 테스트도 쉬워서 괜찮다고 생각하는데 토비님의 생각도 듣고싶습니다!! 좋은 강의 감사합니다!!
현재 수강 진도를 함께 알려주세요! "1주차 3강까지 완료" 또는 "2주차 실습 중"처럼 어디까지 들으셨는지 적어주시면 맞춤형 답변을 드릴 수 있어요 📚 구체적인 상황과 함께 질문해주세요! "AI가 안 된다"보다는 "Cursor에서 이런 프롬프트를 입력했는데 이런 에러가 나와요"처럼 상세하게 적어주시면 더 정확한 답변을 드릴 수 있어요 🎯 스크린샷이나 코드를 첨부해주세요. 에러 화면, 현재 진행 상황을 보여주시면 문제 해결이 10배 빨라집니다! 마크다운 코드 블록(```)을 활용하면 더 깔끔하게 정리할 수 있어요 📸 커뮤니티 검색을 먼저 해보세요. 같은 문제로 고민하신 분들이 이미 해결책을 찾았을 수도 있어요. 검색 후 못 찾으시면 언제든 새로 질문해주세요! 🔍 서로 도우며 함께 성장해요. 나도 모르는 건 "저도 궁금해요!"라고 댓글 달아주시고, 아는 건 적극적으로 공유해주세요. 가르치면서 더 잘하게 됩니다 💪 바이브코딩 관련 질문은 환영, 기술 세부사항은 GPT 활용! 프롬프트 작성법, AI 도구 사용법은 여기서, 복잡한 코딩 문법은 ChatGPT에게 물어보시는 게 더 빨라요 🤖 진도나 과제 관련 문의는 1:1 문의를 이용해주세요. 개인적인 학습 계획, 환불, 수강 기간 연장 등은 따로 문의해주시면 더 자세히 상담드릴게요 📞 실패 사례도 공유해주세요! "이렇게 했더니 망했어요" 같은 경험담도 다른 수강생들에게 큰 도움이 됩니다. 실패도 소중한 학습 자료예요 💡 💬 좋은 질문 예시 [진도] 1주차 3강 Lovable [질문] 클라우드로 넘어갈 때 새로 회원가입 후 계속 퍼즐을 하라고 하는데 맞을까요? (사진 첨부)
안녕하세요, PRD.md -> ROADMAP.md -> Shrimp 로 작업 쪼개기 후 MVP 만든 후에, 기능을 새로 추가할때마다 똑같은 프로세스 ( PRD.md -> ROADMAP.md -> Shrimp ) 를 반복해야 하나요? 아니면 그냥 클로드에 바로 해당 기능을 추가해달라고 하는게 좋을까요?
package hellojpa; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Member { @Id private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Member member = new Member(); member.setId(1L); member.setName("HelloA"); em.persist(member); tx.commit(); em.close(); emf.close(); } } C:\Users\User\.jdks\temurin-21.0.9\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.2.2\lib\idea_rt.jar=65054" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\study\ex1-hello-jpa\ex1-hello-jpa\target\classes;C:\Users\User\.m2\repository\javax\xml\bind\jaxb-api\2.3.0\jaxb-api-2.3.0.jar;C:\Users\User\.m2\repository\org\hibernate\hibernate-entitymanager\ 5.3.10.Final \ hibernate-entitymanager-5.3.10.Final .jar;C:\Users\User\.m2\repository\org\jboss\logging\jboss-logging\ 3.3.2.Final \ jboss-logging-3.3.2.Final .jar;C:\Users\User\.m2\repository\org\hibernate\hibernate-core\ 5.3.10.Final \ hibernate-core-5.3.10.Final .jar;C:\Users\User\.m2\repository\org\javassist\javassist\3.23.2-GA\javassist-3.23.2-GA.jar;C:\Users\User\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\User\.m2\repository\org\jboss\jandex\ 2.0.5.Final \ jandex-2.0.5.Final .jar;C:\Users\User\.m2\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;C:\Users\User\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\User\.m2\repository\org\dom4j\dom4j\2.1.1\dom4j-2.1.1.jar;C:\Users\User\.m2\repository\org\hibernate\common\hibernate-commons-annotations\ 5.0.4.Final \ hibernate-commons-annotations-5.0.4.Final .jar;C:\Users\User\.m2\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;C:\Users\User\.m2\repository\net\bytebuddy\byte-buddy\1.9.5\byte-buddy-1.9.5.jar;C:\Users\User\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\ 1.1.1.Final \jboss-transaction-api_1.2_ spec-1.1.1.Final .jar;C:\Users\User\.m2\repository\com\h2database\h2\1.4.199\h2-1.4.199.jar hellojpa.JpaMain 1월 13, 2026 3:42:37 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...] 1월 13, 2026 3:42:37 오후 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core { 5.3.10.Final } 1월 13, 2026 3:42:37 오후 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 1월 13, 2026 3:42:37 오후 org.hibernate.annotations.common.reflection.java .JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations { 5.0.4.Final } 1월 13, 2026 3:42:38 오후 org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService WARN: HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections 1월 13, 2026 3:42:38 오후 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService WARN: HHH000342: Could not obtain connection to query metadata : The application must supply JDBC connections 1월 13, 2026 3:42:38 오후 org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 1월 13, 2026 3:42:38 오후 org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl makeLobCreatorBuilder INFO: HHH000422: Disabling contextual LOB creation as connection was null Exception in thread "main" java.lang.UnsupportedOperationException: The application must supply JDBC connections at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:44) at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35) at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:106) at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:136) at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:254) at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:262) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:236) at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:86) at hellojpa.JpaMain.main(JpaMain.java:16) Process finished with exit code 1 이거 에러 발생한 이유가 뭘까요? 강의 러닝타임은 11분대입니다.
안녕하세요. 클로드 코드 강의를 지속적으로 수강하면서 관련 의문점들이 몇 가지 생겨 질문드립니다. 우선적으로 프론트엔드를 기반으로 에이전트 및 커맨드를 생성하고 있는 것으로 강의를 들으면서 받아들여지고 있습니다. 하지만 풀스택 개발자나 혹은 백엔드 개발자, 프론트 작업을 많이 수행하지 않는 사람들은 어떤 식으로 작업을 만들고 진행하는 지에 대해서도 추가적으로 참고 자료나 강의 영상이 있으면 좋을 것 같습니다. 또한 저는 pro 버전을 사용하고 있어 토큰의 부담이 있어 sonnet 모델이 아닌 haiku 모델을 사용하고 있습니다. 차이점에 대한 영상은 보았지만 실제 모델별 코드의 품질 차이를 영상으로 확인할 수 있으면 좋을 것 같습니다. 특히 대형 프로젝트 (프론트, 백엔드, AI가 결합된 경우 각 영역을 담당하는 사람이 다를 경우 건드리면 안된다는 규정을 많이 두는데 이러할 경우 권장 모델 및 서브에이전트, 컨택스트 관리, 커맨드 설정 등 어떤 식으로 해야 되는지) 마지막으로 현재 프로젝트 내에 생성하는 것과 모든 프로젝트 내에서 커맨드와 서브에이전트를 사용하고자 할 때 실제 작성하는 md 파일의 차이점을 실제 눈으로 확인할 수 있으면 좋을 것 같습니다. 이러한 의문점이 발생하게 된 계기는 실제 프론트엔드 지식이 React 정도이고 현재 짐코딩님의 React 강의를 듣고 있는 상황에서 Next.js로 만들다 보니 이해가 잘 되지 않는 점도 있고 실제 목표는 풀스택, 백엔드, 보안 쪽으로 취업하는 것이 목표이기 때문에 이러한 방식으로 활용한다는 점은 좋지만 막상 적용하고자 하니 어떤 식으로 작성해야 될 지 막막한 점이 있어 질문 및 가능하다면 강의 요청을 남기는 것입니다!
"섹션 9 퀴즈"의 1번 문제, "Claude Code 설정 파일의 올바른 우선순위 순서는 무엇인가요?" 의 정답이 1번, 기업>사용자>프로젝트으로 나오는데, 이 반대가 아닌지 확인하여 주세요. * 공식문서에서 발췌 범위가 상호작용하는 방식 동일한 설정이 여러 범위에서 구성되면 더 구체적인 범위가 우선합니다: Managed (최고) - 아무것도 재정의할 수 없음 명령줄 인수 - 임시 세션 재정의 Local - 프로젝트 및 사용자 설정 재정의 Project - 사용자 설정 재정의 User (최저) - 다른 것이 설정을 지정하지 않을 때 적용 예를 들어, 사용자 설정에서 권한이 허용되지만 프로젝트 설정에서 거부되면 프로젝트 설정이 우선하고 권한이 차단됩니다.
현재 2~3주 정도 유료 광고를 집행하며 시장 반응을 보고 있는데, 광고 지출 대비 수익(AdMob)이 너무 적어 적자를 보고 있습니다. 광고 전략을 전면 수정해야 할 것 같은데요ㅜㅜ 데이터 해석과 최적화 방향에 대해 조언을 구하고자 질문드려요. 1. 현재 상황 및 지표 앱 상황) 피아노 학습 앱을 만들었고, 페이지별 배너와 학습 스테이지 앞 혹은 뒤에 전면광고를 두었습니다(첫 사용자는 학습 스테이지 뒤에, 그 이후는 스테이지 앞에 전면광고가 나옵니다) 구글 애널리틱스에서는 활성 사용자가 천명 정도 로 나옵니다. 사용자 지표: 리텐션은 1주 차 15.6%, 2주 차 5.3% 정도 입니다. 광고 집행 상황) 안드로이드는 Google Ads(UAC)로 한국, 일본, 영어권(미국/캐나다 등 6개국)에 각 캠페인당 일일 3000원씩 집행 중 입니다. iOS는 인스타그램 연주 영상 광고가 효과적일 것 같아 동일하게 각 나라별 $2씩 집행 하고 있습니다. Google Ads 3주, 인스타 광고 2주 차입니다(계속 최적화를 했어야했는데, 미룬 점 반성하고 있습니다 ㅜ) 아래는 google ads(android 광고) meta ads(ios 광고)의 최근 일주일간 상황입니다. Google ads의 클릭율은 4%, 전환율은 7% 정도 되고 있고 전환당 비용은 262원 정도입니다. meta ads는 바로 설치율만 나오고 있고 비용도 0.41$로 비싸서 google ads로 ios도 광고해볼까 고민중 입니다(노출대비 설치율로 보면 구글은 1.3%, 0.8% 정도로 계산됩니다) 수익상황) AdMob 수익은 일평균 총 1~1.3 달러 수준으로, ios, android 비중은 비슷합니다. 아래는 최근 1주일간의 admob 수익 지표입니다. 전면광고는 eCPM 10달러 정도이고, 배너는 1달러 왔다갔다 하고있습니다 admob.pro로 보면 보이는 지난7일 상황입니다 ㅎㅎㅎ 위가 Ios고 아래가 android입니다. 2. 광고 운용 관련 고민 질문 질문1. 현재 적자가 심해 예산을 확 줄이는게 합리적일거같은데요. 현재 admob 수익 상황에 맞게 줄이는게 맞겠죠? 아예 $1 미만으로 적자가 나지 않는 선으로 급격히 줄여도 광고 알고리즘에 악영향이 없을까요? 그리고 줄여도 된다면 단계적으로 줄여야 하는지, 아니면 기존 광고를 끄고 저렴한 예산으로 아예 새로 세팅하는 게 나을지 궁금합니다. 질문2. iOS에서도 Google Ads를 활용했을 때도 유의미한 성과가 있을까요? 혹시 ios를 google ads로 홍보해보신 경험이 있으실까 싶어 여쭤봅니다. 아예 관리 포인트를 하나로 줄여볼까 생각도 들어서 여쭤봅니다. 질문4. ecpm, 전환율, 클릭률, 리텐션 등 앱 만드실 때 경험적으로 이정도는 되어야 한다 생각하시는 값 이 있을까요? eCPM(전면 10달러, 배너 1달러)이나 전환율 7%, 클릭률 4%, 일주일 리텐션 15% 현재 상황이 어떤지 의견이 궁금합니다! 질문3. 현재 상황을 봤을 때, 이 앱의 수익 구조 자체를 비관적으로 봐야 할 시점인가요? 아니면 초기 최적화 단계에서 흔히 겪는 과정인가요? 피아노 자체가 필요한 앱이라서 좀 더 한계가 있는건가 싶기도하네요. 질문3-1. 강의에서 두달 정도 있다가 확 광고 성과가 좋아지는 경우가 있다고 하셨는데 이때 수익이 느는 이유는 무엇인가요 ? 홍보량이 같은데 eCPM이 좋아지는 건지, 아니면 최적화로 인해 타겟팅 정확도가 올라가는 건지 궁금합니다. 질문4. 그동안 광고 문구나 소재 교체에 소홀했던 것 같아 수정해보려 합니다. 이때 현재 상황에서 기존 캠페인을 끄고 새로 만들어야 할까요? 아니면 적자를 감수하더라도 기존 것과 병행하며 테스트 기간을 더 가져가야 할까요? 혹시 별개로 조언 해주실 점 있으시면 조언해주시면 너무 감사드립니다! 으악 적다보니 질문이 많아졌네요. 나눠서 질문할까 하다가 맥락을 매번 새로 적어야 할거같아 모아서 질문드리는 점 양해 부탁드립니다. 처음이라 의욕만 앞서다 보니 다소 전략 없이 광고비를 쓴 것 같아 반성하고 있습니다. 다른 악기 학습 앱으로의 확장도 고려 중이라, 이번 피아노 앱에서 제대로 된 기준점을 잡고 싶습니다. 작은 조언이라도 소중히 듣겠습니다. 미약한 시작을 함께 해주셔서 감사합니다!
안녕하세요, 선생님. 강의 잘 듣고 있습니다. 앱 연령 등급이 크게 문제가 되지 않는다면, 전체 연령으로 설정해도 괜찮을지 궁금합니다. 글로벌 출시 앱의 경우 COPPA와 GDPR을 준수해야 하는 것으로 알고 있는데, AdMob > 차단 관리 > 광고 콘텐츠 등급 / 민감한 카테고리 설정은 어떤 기준으로 설정하는 것이 적절할까요? 제가 여러모로 조심스러운 편이라 걱정이 많습니다. 광고를 차단하니 초기에 광고가 너무 안나오는 문제가 있는거같네요. 혹시 이 내용이 강의 중에 다뤄졌다면, 제가 놓쳤을 수도 있으니 해당 파트를 알려주시면 감사하겠습니다. 감사합니다.
Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
Rehype-sanitize를 사용하면 어떻게 설정을 하든, <u>에 대한 허용을 설정하든, '밑줄'을 긋는 서식에 대한 결과가 제대로 이루어지지 않습니다. 항상 생략되어 밑줄쳐둔 부분은 삭제되는 결과를 낳습니다. 그래서 드는 생각이, 어차피 제 노션에서 쓴 글을 받아서 작성하는데, 텍스트로 html코드를 이상하게 적어둘것도 아니므로, 굳이 sanitize가 있을 필요가 있나 하는 의문이 듭니다.