묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드 연결하는데 데베에 문제가 있다고 하네요
Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:191) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentWithDefaults(JdbcEnvironmentInitiator.java:143) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]이런식의 오류가 났는데 데베설정이 잘못돼서 그런건가요 코듣상의 문제는 없는거 같습니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
강의내용 변경 시 알 수 있는 방법이 있을까요 ?
코딩 강의는 다 수강했는데, 혹시라도 강의내용이 변경되면 알 수 있는 방법이 있을까요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
홈화면 추가에서 index.html이 실행되고 home이 실행이 안되는 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 보고 똑같이 코딩했는데localhost:8080이렇게넣었을때 welcom화면으로 index.html이 뜹니다다른분들이질문하신 글들을 다 읽어보고 답변해주신내용들 대로 다 실행해보았으나 해결이 되지 않아, 같은 내용이지만 글을 올립니다..home에서 ctrl + B했을때 home.html화면이 잘 떴었고,전체기간 캐시도 삭제해 봤습니다..그리고 index.html지우면 화이트라벨 에러뜨면서 안되더라구요.제거https://drive.google.com/file/d/1mDv9-Z_r6aChpDBx1ZhtlJZL0dZG6Hzj/view?usp=sharing
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
첫 프로젝트 생성 문의
프로젝트 생성해서 자바 17버전을 깔고 다시 나갔다 들어오니 처음 화면이 저렇게 나옵니다 우측 선생님과 같은 화면이 안나오는데 어떻게 해야하나요??
-
미해결실습으로 배우는 선착순 이벤트 시스템
Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제
안녕하세요! 강사님 덕분에 현재 진행중인 프로젝트 코드에 동시성 문제 잘 적용하고 있습니다. 다름이 아니라, 현재 MSA 프로젝트를 하고 있어 쿠폰 쪽 DB는 쿠폰만 쓰기 때문에 부하에 따른 걱정은 덜어도 될 것 같아 카프카가 아닌 Redis의 INCR 명령어를 통해서 선착순 쿠폰 로직의 Race condition 문제를 잡아보려고 하고 있는데요.질문에 앞서 프로젝트 환경을 말씀드리자면 강의와 동일하게 docker pull redis 해서 이미지로 다운받아 실행했고, 6380 포트로 연결해줘서 yml 설정과 Config 설정 또한 해줬습니다. INCR 키 값을 살짝 바꿔서 coupon_count:{couponId} 가 되도록 해줬습니다. 문제는 1000개의 쓰레드로 요청을 날렸을 때 여러번의 요청 테스트는 통과가 안된다는 점입니다.. 쿠폰 발급이 100개 되어야하는데 102, 103번 애매하게 되고 있습니다. (postman으로 API 요청 날릴 때마다 해당 키 값의 value가 1씩 잘 증가하는 것은 확인했습니다) RDB 상에서도 100개의 발급 내역이 잘 들어오고 있구요. (물론 테스트가 DB에 영향을 미치면 안되지만요ㅠㅠ)이런 경우는 왜 그런건가요?? 코드도 첨부 하겠습니다. 감사합니다!!/* * 선착순 쿠폰 발급 */ @Transactional public CouponIssuedResponseDto issueFirstComeCoupon(CouponIssuedRequestDto request) { // 쿠폰 ID로 쿠폰을 찾고, 존재하지 않으면 예외 처리 Coupon coupon = couponRepository.findById(request.couponId()) .orElseThrow(() -> new CustomException(ErrorCode.COUPON_NOT_FOUND)); // 발급 가능한 쿠폰 수량 확인 -> Redis Long currentCount = couponCountRepository.getCount(request.couponId()); if (currentCount > coupon.getMaxQuantity()) { throw new CustomException(ErrorCode.COUPON_ISSUE_LIMIT_EXCEEDED); } // 새로운 쿠폰 발급 -> Redis에서 수량 증가 Long newCount = couponCountRepository.increment(request.couponId()); if (newCount > coupon.getMaxQuantity()) { throw new CustomException(ErrorCode.COUPON_ISSUE_LIMIT_EXCEEDED); } CouponIssued issued = CouponIssued.builder() .coupon(coupon) .userId(request.userId()) .issuedAt(LocalDateTime.now()) .build(); CouponIssued saved = couponIssuedRepository.save(issued); return CouponIssuedResponseDto.fromEntity(saved); }@Repository public class CouponCountRepository { private final RedisTemplate<String, Long> redisTemplate; public CouponCountRepository(RedisTemplate<String, Long> redisTemplate) { this.redisTemplate = redisTemplate; } public Long increment(Long couponId) { String key = "coupon_count:" + couponId; return redisTemplate.opsForValue().increment(key, 1); } public Long getCount(Long couponId) { String key = "coupon_count:" + couponId; Long count = redisTemplate.opsForValue().get(key); return count != null ? count : 0L; } }@BeforeEach public void setUp() { // Redis 초기화 redisTemplate.opsForValue().set("coupon_count:10", 0L); } @AfterEach public void tearDown() { couponRepository.deleteAll(); couponIssuedRepository.deleteAll(); redisTemplate.delete("coupon_count:10"); // 테스트 끝난 후 Redis 데이터 삭제 } @Test public void multipleUserIssueCoupon() throws InterruptedException { // Given // 쿠폰을 생성 Coupon coupon = Coupon.builder() .name("Test Coupon") .couponCode("TEST100") .discountRate(10) .maxQuantity(100L) .issuedQuantity(0L) .expiresAt(LocalDateTime.now().plusDays(30)) .couponType(CouponTypeEnum.FIRST_COME) .build(); couponRepository.save(coupon); Long couponId = coupon.getCouponId(); // 고정된 couponId 사용 Long userId = 1L; // 고정된 userId 사용 // When int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(50); CountDownLatch latch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { executorService.submit(() -> { try { CouponIssuedRequestDto request = new CouponIssuedRequestDto(10L, userId); couponIssuedService.issueFirstComeCoupon(request); } catch (CustomException e) { // Expected exception when limit is exceeded } finally { latch.countDown(); } }); } latch.await(20, TimeUnit.SECONDS); // Then Long count = redisTemplate.opsForValue().get("coupon_count:10"); System.out.println("coupon_count:10 = " + count); // 디버깅용 로그 추가 assertThat(count).isNotNull(); // count가 null이 아닌지 확인 assertThat(count).isEqualTo(100); // 발급된 쿠폰의 수를 확인 long issuedCount = couponIssuedRepository.count(); assertThat(issuedCount).isEqualTo(100); }
-
미해결스프링 핵심 원리 - 기본편
8분 10 초 영상 AutoAppConfigTest
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]8분 10 초에서 AutoAppConfigTest 에서 basicSacan Test 할 때 왜 OrderServiceImpl 생성자가 호출이 되는건가요..? ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어봤는데 괜찮을까요?
function App() { const solve = (m ,arr) => { let answer = 0; let n = arr.length; arr.sort((a,b) => (a[0] + a[1]) - (b[0] + b[1])); // 50% 쿠폰, 상품 for (let i = 0; i < n; i++) { let money = m - (arr[i][0] - arr[i][1]); let cnt = 1; for (let j = 0; j < n; j++) { if (j === i) { continue; } money = money - (arr[j][0] + arr[j][1]) if (money > 0) { cnt ++; } } if (answer < cnt) { answer = cnt } } return answer } const arr = [[6,6],[2,2],[4,3],[4,5],[10,3]]
-
해결됨디자인 시스템 with 피그마
Html로 변환하는 플러그인 추천바랍니다
쌤 오프라인수업도 들었는데 너무 도움이 되었어요 멀캠에서 후속 심화과정도 있었으면 좋겠습니다 프로젝트에 퍼블리셔가 없어서요Html로 바로 뽑아서 개발자에게 넘겨야하는데 그래도 제일 정확도?가 높은 플러그인이나 변환 사이트 있으면 추천 부탁드리고 변환할 때 팁 있으면 알려주세요~
-
해결됨Next.js 시작하기
next create-next-app@latest 설치 문제
Aborting installation.Unexpected error. Please report it as a bug: Error: EACCES: permission denied, open '/Users/jeonginn/Library/Preferences/create-next-app-nodejs/config.json.tmp-982595282012e022' at openSync (node:fs:581:18) at attempt (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:8:43165) at Object.writeFileSync (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:8:38664) at Conf._write (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:8:74912) at set store [as store] (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:8:73358) at Conf.set (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:8:71962) at run (/Users/jeonginn/.npm/_npx/efeac22998af9bf2/node_modules/create-next-app/dist/index.js:74:51291) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { errno: -13, code: 'EACCES', syscall: 'open', path: '/Users/jeonginn/Library/Preferences/create-next-app-nodejs/config.json.tmp-982595282012e022'}설치할 때 터미널에서 이런 메세지가 나오네요 ㅠㅠ 권한 문제인거 같아서 구글링 계속 해보면서 해봤는데 안되서 글 남깁니다 ㅠㅠ
-
해결됨[React / VanillaJS] UI 요소 직접 만들기 Part 2
모달만드는 방식 질문
안녕하세요 재남님 강의 너무 잘듣고 있습니다이번 강의 듣고 생각이 드는게 저는 지금까지 모달을 만들때 각각의 모달을 완성본으로 만들고 모달을 부르는 트리거버튼이나 그,런것에 상태를 주고 상태의 변경에따라 그 아래에 그리는 방식으로 모달을 구현했습니다이번강의도 보면 비슷하긴한데 모달을 만드는곳에서 모든것을 만드는것이 아니라 모달이라는(컴파운드 패턴..? 사실 이건 처음봐서 혼란스럽네요...ㅎㅎ)컴포넌트에서 기본 적인 css와 칠드런등을 만들어놓고 모달에서는 이것들을 가져와서 완성본 모달을 만드는것으로 이해를 했습니다 제가 궁금한것은실무에서는 보통 이렇게 만드는지 궁금합니다이렇게 만드는것의 장점이 있을까요?(찾아보니 재사용성이 좋다고 하는데 이부분이 크게 와닿지가 않네요..)
-
해결됨
[오프라인] 스프링캠프 2024 환불
안녕하세요. [오프라인] 스프링캠프 2024 신청했다가 환불 요청했는데 아직 완료가 안됐습니다. 혹시 환불 요청이 제대로 안된건가요?
-
해결됨Next + React Query로 SNS 서비스 만들기
강의를 다 보고 궁금한점이 생겼습니다! (afterLogin)에 대해서 질문있습니다.
https://github.com/ZeroCho/next-app-router-z/blob/master/lecture/src/app/(afterLogin)/layout.tsx제로초님 강의를 다 듣고 코드를 살펴보던 중 의문이 있어 질문 드립니다.해당 코드를 보면lecture/src/app/(afterLogin)/layout.tsx파일에서거의 최고 부모컴포넌트인 <RQProvider>가 "use client"를 사용하여 클라이언트 컴포넌트가 되는것으로 알고있는데이렇게 한다면 그 하위 컴포넌트들은 전부 클라이언트 컴포넌트가되는게 아닌가요?어떻게 서버컴포넌트를 사용할 수 있는건지 궁금합니다.
-
미해결실무자가 알려주는 CANoe - CAPL과 Panel 기본 사용법
보충설명 - "Write 함수"
안녕하세요.보충설명 - "Write 함수" 의 강의자료는 어디서 받을수 있을까요 ?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
5장 실습연습 질문
안녕하세요 🙂[1. 질문 챕터] : eg) 5장 10:30초쯤[2. 질문 내용] : 여기에서 출력값을 바로 OUTPUT으로 잡지 않고 reg를 통해서 잡아주신 이유가 있을까요? 단지 Testbench와 DUT의 관계를 설명하시기 위함인지 아니면 특별한 이유가 있는지 궁금합니다.[3. 시도했던 내용, 그렇게 생각하는 이유] : 처음에 설계를 할 때always 문들에서 else 부분에 i_value를 저같은 경우네는 바로 o_value로 보냈을 것 같은데 reg를 한 번 거치신 이유가 궁금합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
메세지 보내고 백엔드에 저장하는 부분이 어디인지 궁금합니다.
안녕하세요 선생님완강하고 채팅을 구현해보려고 합니다.그런데 강의와 깃헙을 보면soket으로 보내는 내용,쿼리에 데이터 추가하는 내용은 있는데소켓으로 보낸 내용이 백엔드에 저장되는 부분이 보이질 않더라구요,클라이언트에서 소켓으로 데이터를 보내면 그걸 받고 백엔드에서 저장해주는 로직이 따로 있는걸까요?
-
미해결그림으로 쉽게 배우는 네트워크
1계층에 역할에 관하여
궁금한게 있어서 글 남겨드립니다1계층 즉, 물리계층은 데이터(프레임)을 전기신호로 바꿔서 전송하는 계층이라고 말씀해주셧습니다대표적인 1계층 장비가 케이블이고요다만, 여기서 햇갈리는게케이블은 데이터를 전기신호로 바꿔주는게 아니라전기신호를 전송하는 역할만을 가지고있는지 아닌가 싶습니다이전 수업에서 말씀하셧던대로데이터를 전기신호로 바꿔주는 역할은2계층에 장비인 랜카드가 아닌가요?그래서 랜카드가 물리계층에 역할을 하신다고 하셧구요만약 위에 말이 맞다면1계층은 정확히 말하자면 물리계층은 데이터(프레임)을 전기신호로 바꿔서 전송하는 계층이 아닌, 전기신호를 전송하는 계층으로 봐야되지않나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
node 설지시 오류 입니다.
npx create-react-app mall 명령어 입력시 해당 오류가 발생합니다. log의 내용은 다음과 같습니다.0 verbose cli C:\Program Files\nodejs\node.exe C:\Users\USER\AppData\Roaming\nvm\v10.16.3\node_modules\npm\bin\npm-cli.js1 info using npm@10.7.02 info using node@v20.15.03 silly config:load:file:C:\Users\USER\AppData\Roaming\nvm\v10.16.3\node_modules\npm\npmrc4 silly config:load:file:C:\Users\USER\reactAPI_workSpace\.npmrc5 silly config:load:file:C:\Users\USER\.npmrc6 silly config:load:file:C:\Users\USER\AppData\Roaming\npm\etc\npmrc7 verbose title npm exec create-react-app mall8 verbose argv "exec" "--" "create-react-app" "mall"9 verbose logfile logs-max:10 dir:C:\Users\USER\AppData\Local\npm-cache\_logs\2024-07-01T07_49_17_781Z-10 verbose logfile C:\Users\USER\AppData\Local\npm-cache\_logs\2024-07-01T07_49_17_781Z-debug-0.log11 verbose stack TypeError: LRUCache is not a constructor11 verbose stack at Object.<anonymous> (C:\Users\USER\AppData\Roaming\nvm\v10.16.3\node_modules\npm\node_modules\cacache\lib\memoization.js:5:18)11 verbose stack at Module._compile (node:internal/modules/cjs/loader:1358:14)11 verbose stack at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)11 verbose stack at Module.load (node:internal/modules/cjs/loader:1208:32)11 verbose stack at Module._load (node:internal/modules/cjs/loader:1024:12)11 verbose stack at Module.require (node:internal/modules/cjs/loader:1233:19)11 verbose stack at require (node:internal/modules/helpers:179:18)11 verbose stack at Object.<anonymous> (C:\Users\USER\AppData\Roaming\nvm\v10.16.3\node_modules\npm\node_modules\cacache\lib\get.js:8:14)11 verbose stack at Module._compile (node:internal/modules/cjs/loader:1358:14)11 verbose stack at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)12 verbose cwd C:\Users\USER\reactAPI_workSpace13 verbose Windows_NT 10.0.1904514 verbose node v20.15.015 verbose npm v10.7.016 error LRUCache is not a constructor17 verbose exit 118 verbose code 119 error A complete log of this run can be found in: C:\Users\USER\AppData\Local\npm-cache\_logs\2024-07-01T07_49_17_781Z-debug-0.lognode 와 npm 버전은 이렇게 깔려있습니다. 재설치 해도 여전히 오류가 발생합니다 ㅜㅠ 어떻게 해결해야 할까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
문제 풀이시 설명 요청 드립니다.
선생님 문제풀이 하실 때 짝수, 약수를 구분해서 빠르게 문제를 파악하는 스킬은 매우 좋은 방법 같아요그런데 코드가 한번 돌아가면서 변수 숫자가 바뀌는데 그냥 풀어버리시니까 어떻게 하는 지 프로그램을 사용해보지 않은 비전공자 입장에서는 이해가 덜 가는 것 같아요조건 반복문에서 변수가 증감되는 것이 헷갈리거든요문제를 풀 때는 하나 하나 숫자를 적어가면서 변하는 값을 알고 대입해야 하는데.. 풀이를 보니 쫒아가지를 못하겠네요조건 반복문 문제풀이에서 어떻게 계산하라는 거지? 라는 생각이 들어요. 제가 표도 그려서 적어보기도 하고.. 여러 방법을 시도해봤는데 여러개의 변수가 들어가면 헷갈리더라고요 (15분 전 문제, 15분 문제)조금만 더 자세하게 천천히 알려주시면 감사하겠습니다. 수포자는 더 힘들어요. ㅋㅋ
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
객체 참조 관련 질문
위와 같이 코드를 작성했을 때, D.push(d) 이후에는 d === D[2] 값이 false가 나옵니다. 이건 push할 때는 새로운 주소에 할당되기 때문일까요?깊이에 따른 복사가 다르다고 얼핏 듣긴 했습니다만 잘 몰라서 질문 드립니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
페이징 처리
안녕하세요. 선생님. todolist를 따라하며 완성하였는데요.todolist의 list들이 많아지면 페이징 처리를 통해 나누어 봐야 할 거 같은데 이 기능은 어떻게 구현하면 좋을까요??(RESTFUL API로 개발하면 프론트, 백엔드 양쪽에서 페이징 처리를 해야 하는지,, )