묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결빅데이터분석기사 실기대비 (R 활용)
작업형 2유형 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님의 강의로 준비를 열심히하고있는 학생입니다나름 이제 방법을 터득해 1유형은 걍 데이터마님 캐글 등의 사이트 문제 반복 풀이, 2유형은 선생님의 말씀대로Str, summary 를 통한 데이터 확인 후 결측치 있을시 삭제 혹은 평균화, 팩터형으로 바꾸기도하고, level 이 너오무 많을시 팩터형 삭제 등 까지만 하고 바로 datapartion에 들어갑니다그런데 다른분들을 보니 위의 과정을 거친 후 scale도 하시고 주성분 분석 등 다양한 방법 후 데이터를 학습시키는거같은데..여기서 질문입니다. 선생님 말씀대로 위의 과정을 간단히 (왜냐하면 변수에 대해 사전지식이 없기때문) 전처리하고 데이터를 학습시키기만 하더라도 완전 고득점까진아니더라도 반타작이상은 하지않을까 싶어서요… 선생님 고견은 어떠신지 여쭙니다
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
(LeetCode.627) IF문 보다 CASE문의 실행시간이 왜 더 빠른가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.CASE문으로 실행했을 때는 241ms, IF문으로 실행했을 때 280ms로, CASE문이 더 빨랐습니다.저는 CASE문의 구조가 더욱 복잡해 시간이 더 오래 걸릴 것이라 생각하고 IF문으로 돌려봤는데 오히려 이게 더 느리네요. 그 이유를 알 수 있을까요?
-
미해결마케터를 위한 구글 애널리틱스 실무
강의북 pdf 자료 요청드립니다.
안녕하세요 좋은 강연 감사합니다.원활한 학습을 위해 강의북 PDF 자료를 요청드립니다.yrjung@woowahan.com
-
미해결예제로 배우는 스프링 입문 (개정판)
예제가 이전과 다르네요
쿼리부분에서 fetch부분이 빠지고 다른식으로 검색필터를 적용하는 데 똑같이 복붙하고 firstName만 바꿨는데 쿼리쪽에서 오류나니 어떻게 바꿔야할지.. collection도 없어요ㅠ
-
미해결따라하며 배우는 리액트 테스트 [2023.11 업데이트]
es6 jest 미지원 오류 문의
안녕하세요 강의 잘 듣고 있습니다. 강의를 듣다가 axios를 설치하고 import 하는 과정에서 다음과 같은 문제가 발생했습니다. 구글링을 해보니 jest가 es6를 지원하지 않아서 발생하는 문제라고 하던데 구글링해서 찾아본 방법들은 해결이 되지 않아 문의 드립니다. FAIL src/pages/OrderPage/tests/Type.test.js ● Test suite failed to run Jest encountered an unexpected token Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax. Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration. By default "node_modules" folder is ignored by transformers. Here's what you can do: • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it. • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config. • If you need a custom transformation specify a "transform" option in your config. • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option. You'll find more details and examples of these config options in the docs: https://jestjs.io/docs/configuration For information about custom transformations, see: https://jestjs.io/docs/code-transformation Details: C:\Users\multicampus\Desktop\projects\react-test-app\react-shop-test\node_modules\axios\index.js:1 ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import axios from './lib/axios.js'; ^^^^^^ SyntaxError: Cannot use import statement outside a module > 1 | import axios from 'axios'; | ^ 2 | import React, { useEffect, useState } from 'react' 3 | import { Products } from './Products'; 4 | at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1728:14) at Object.<anonymous> (src/pages/OrderPage/Type.js:1:1) at Object.<anonymous> (src/pages/OrderPage/tests/Type.test.js:2:1) at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13) at runJest (node_modules/@jest/core/build/runJest.js:404:19)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
게임 서버
안녕하세요 루키스님! 어느덧 루키스님의 강의를 들은지 1년이 돼가는데요제가 이번에 졸업작품으로 2D 멀티 생존형 배틀로얄 게임을 제작해보려고 합니다!1년짜리 프로젝트구요 질문을 드린 이유는강의 처럼 서버를 직접 설계하는 것이 나을까 아니면 포톤 같은 엔진을 써서 쉽게 개발을 할까를 여쭤보고 싶었습니다!실력 향상 면에서는 서버를 직접 설계해보는 것이 낫겠지만 실무에서 원하는 것은 빠른 대처일테니까요큰 게임 회사에 취직하기 위해서 어떤 서버를 쓰는 것이 포트폴리오로 좋을까요?? 현직자의 입장이 궁금합니다!+ 아직 클라이언트 개발자로 갈지 서버로 갈지 정하지를 못한 상황입니다. 이런 상황에서 클라 서버 둘다 해봐도 괜찮은걸까요? 지금까지 개발해본 경험은 대부분 클라이언트고 서버 개발이라곤 루키스님의 강의가 전부였습니다 ㅠㅠ
-
미해결입문자를 위한, ES6+ 최신 자바스크립트 입문
삭제를 다 하고 싶은데요,,,
앞전 질문에서 앞에 추가하기도 X 버튼이 뜨게 잘 되었습니다. 감사드려요...복사하지 않고 입력을 해본다는게 그만 오타를 못찾는 바람에 안되었습니다.한가지 더 추가로 해보려고 하는데, 타깃제거를 클릭하면 추가한 목록들을 다 지우게 하고 싶어서 수정을 해보았는데,,,,추가버튼을 클릭할때 추가된 li에 item 이라는 클래스를 다 만들게 했구요 li.classList.add('item');그랬더니 추가항목에 클래스가 잘 추가된거까지는 확인을 했습니다.그런다음,,,removeTargetBtn.addEventListener('click', function(){ let targetList = document.querySelectorAll('.item'); targetList.remove(); });querrySelectorAll 로 추가된 클래스 item 를 모두 가져와서 remove를 했는데,,,,,문법상으로 틀린게 있는거 같은데....ㅠㅠ
-
해결됨갖고노는 MySQL 데이터베이스 by 얄코
강의페이지에 이메일이 어디잇나요
🛑 이곳에 질문하지 마세요!!!질문은 강의페이지에 안내드린 방식으로 이메일로 보내주세요!강의페이지에 질문은 어떻게 해야하는지 어디에 나와있는지 도저히 찾을 수가 없습니다. 급하게 배워야 하는데 시간이 너무 촉박하기도 한데 express 연동부터가 안되네요.. 터미널에서 자꾸error 라고 뜨는데 질문할 곳도 없고 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
안녕하세요 해당 프로젝트의 watch $route 관련 질문 드립니다.
안녕하세요 캡틴판교님스터디를 하다가 궁금한 점이 있어 글을 남깁니다. [그림-1]그림1과 같이 App.vue 내에 watch $route를 통해 페이지 라우팅의 변화를 감지하는 테스트 코드를 넣었는데 예상대로 잘 동작합니다. 문제는 다른 컴포넌트 혹은 page에서 위와 같은 코드를 작성하여도 동작하지 않는다는 것입니다. [그림-2]그림2와 같이 SignupForm.vue 컴포넌트 내에서 watch $route를 코드를 작성후 테스트 하였는데 동작하지 않더라구요... 다른 컴포넌트들에서도 같은 코드를 넣었는데 콘솔에 찍히지 않았습니다. 궁금해서 여쭤봅니다 감사합니다.
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
안녕하세요 LocalStorage 데이터베이스 부분 오류 질문입니다.
안녕하세요 제가 이제 LocalStorage를 이용해서 하는 챕터까지 진행했는데요전부 다 코딩치고 여러가지 테스트를 해보다가 일기를 전부 삭제를 했더니 오류가 나옵니다..갑자기 화면은 아무것도 안뜨고 콘솔창에서는 Uncaught TypeError: Cannot read properties of undefined (reading 'id') 이란 에러가 뜹니다.그리고 에러위치는 App:52:1 로 dataId.current = parseInt(diaryList[0].id) + 1; 요 부분에서 에러가 나는거 같습니다.... 제가 어느부분을 잘못한걸까요??
-
미해결실전! 웹사이트제작! Step by Step! (한국소비자원 소비자시대- 레이아웃제작 기초)
CSS 맨 마지막 top 클래스 부분 질문입니다
안녕하세요.CSS 맨 마지막 top 클래스 부분 질문입니다 아래와 같이 강의에서 알려주신 대로 하면 잘 됩니다..top { float: right; margin-right: 30px; margin-bottom: 30px; width: 80px; height: 80px; border-radius: 50%; background: #454545; background-image: url(../img/arrow.JPG); background-repeat: no-repeat; background-size: 25px; background-position: top; position: relative; } .top a {display: block; width: 100%; height: 100%;} .top p { font-size: 16px; font-weight: bold; color: #fff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } 그런데, 아래와 같이 하면 안 됩니다. (.top a 부분을 따로 작성하지 않고 .top 안에서 설정함).top { float: right; margin-right: 30px; margin-bottom: 30px; width: 80px; height: 80px; border-radius: 50%; background: #454545; background-image: url(../img/arrow.JPG); background-repeat: no-repeat; background-size: 25px; background-position: top; position: relative; display: block; width: 100%; height: 100%; } .top p { font-size: 16px; font-weight: bold; color: #fff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } 아래와 같이 해도 안 됩니다.(.top p 를 .top a p 로 함).top { float: right; margin-right: 30px; margin-bottom: 30px; width: 80px; height: 80px; border-radius: 50%; background: #454545; background-image: url(../img/arrow.JPG); background-repeat: no-repeat; background-size: 25px; background-position: top; position: relative; } .top a {display: block; width: 100%; height: 100%;} .top a p { font-size: 16px; font-weight: bold; color: #fff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } 이 세 가지의 차이점을 정확하게 설명해 주시면 감사하겠습니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
list #2 2:40~ 임의접근
안녕하십니까! 강의 정말 잘 듣고 있습니다!다름이 아니라 list의 임의 접근 문법이 막힌 이유에서 속도차이에 대해서 뭔가 팍!하고 와닿지 않아 질문드립니다.vector같은 경우 '연속된'주소에 데이터가 저장되기 때문에 n번째 데이터는 ++연산으로 '바로 옆주소' 로 이동하여 찾는다. 그렇기 때문에 비교적 빠르게 찾을 수 있다.하지만 list의 경우 연속되지 않는 다른 어딘가에 다음 값을 저장하고 그 주소로 가는 주소값을 들고 있는데 vector와는 다르게 일일이 '주소값을 타고 워프'를 해줘야하기 때문에 시간이 많이 걸린다. 라고 이해를 했지만 위 두 경우의 속도 차이가 문법을 막을 만큼 차이가 어마어마하게 나는 건가요?!
-
미해결스프링 핵심 원리 - 기본편
findAllBean 질문입니다.
<조회한 빈이 모두 필요할 때, List, Map> 강의 4분 경입니다. <옵션 처리> 강의에서, '@Autowired만 사용하면 required 옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다'고 하였는데본 강의에서는 컴파일, 실행이 모두 잘 되며policyMap = {}policies = []라고 뜹니다. 스프링 빈에 DiscountService만 등록되어 policyMap, policies에 자동 주입할 것이 없는데 왜 오류가 발생하지 않는 건가요?OrderServiceImpl에 (스프링 빈이 아닌)Member을 넣어 보니 정상적으로 오류가 발생하는데, 본 테스트에서는 왜 오류가 나지 않는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpql 로도 3중조인이 가능한가요?
JPQL로 3중 조인이 가능할까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문자열 직접 뒤집는 과정에서 질문이 있습니다.
for (String s : str) { char[] chars = s.toCharArray(); int lt = 0; // 캐릭터 배열의 첫번째 인덱스 (왼쪽 끝) int rt = s.length() - 1; // 캐릭터 배열의 마지막 인덱스 (오른쪽 끝) while (lt < rt) { char tmp = chars[lt]; // 임시 캐릭터에 캐릭터 배열 첫번째 원소 집어넣음 chars[lt] = chars[rt]; // 캐릭터 배열 첫번째 원소를 마지막 원소로 교환 chars[rt] = tmp; // 캐릭터 배열 마지막 원소를 첫번째 원소로 교환 lt++; rt--; } String tmp = String.valueOf(chars); // 캐릭터 배열을 String으로 바꿔줌. valueOf 활용 answer.add(tmp); }char tmp = chars[lt] 를 해주게 되면 tmp 에는 별도의 메모리가 할당되어 char[lt]의 값이 저장되게 되고 그래서 chars[rt]의 값을 chars[lt]에 넣어줘도 tmp의 값은 변하지 않는건가요? 그래서 마지막에 chars[rt]의 값을 tmp로 바꿀 수 있는건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional 내부 메소드 호출
@Slf4j @Service public class MainService { public void methodA() { log.info("=== methodA 시작... ==="); // 비즈니스 로직 A .... methodB(); log.info("=== methodA 종료... ==="); } @Transactional public void methodB() { log.info("=== methodB 시작... ==="); log.info("-> is methodB transaction active? = {}", TransactionSynchronizationManager.isActualTransactionActive()); // 비즈니스 로직 B .... log.info("=== methodB 종료... ==="); } } @Controller @RequiredArgsConstructor public class MainController { private final MainService mainService; public ResponseEntity<Void> transactionalTestMethod() { mainService.methodA(); return ResponseEntity.ok().build(); } }이러한 MainService 구조에서 MainController에서 mainSerivce.methodA()를 호출하게 되면 methodA는 현재 트랜잭션을 유도하지 않고 있고 그 내부적으로 methodB는 내부 프록시 호출이기 때문에 당연히 methodB에는 트랜잭션 처리가 되지 않음은 이해하였습니다 그런데 이와 관련해서 실험을 하던 도중에@Slf4j @Service public class MainService { @Transactional public void methodA() { log.info("=== methodA 시작... ==="); // 비즈니스 로직 A .... methodB(); log.info("=== methodA 종료... ==="); } @Transactional public void methodB() { log.info("=== methodB 시작... ==="); log.info("-> is methodB transaction active? = {}", TransactionSynchronizationManager.isActualTransactionActive()); // 비즈니스 로직 B .... log.info("=== methodB 종료... ==="); } }이러한 MainService 구조에서 mainService.methodA를 호출할 때 methodA에는 트랜잭션 처리가 됨이 당연한데 그 내부적으로 this.methodB를 호출하면 methodB에도 TransactionSynchronizationManager.isActualTransactionActive()의 결과가 true로 나옴에 따라 트랜잭션 처리가 되는 것 같습니다 제가 알고있던 것은 methodA에서 트랜잭션 처리가 진행이 되더라도 methodB는 내부적으로 호출되는 메소드이기 때문에 트랜잭션 처리가 이루어지지 않는다고 알고있었습니다 물론 Log를 찍어도 methodB 전 후에는 Participating transaction 관련 로그는 없었습니다 하지만 methodB에서 TransactionSynchronizationManager.isActualTransactionActive()의 결과가 true로 나옴에 따라 트랜잭션 처리가 유지되는 것 같은데 혹시 위와 같은 구조에서도 트랜잭션 처리가 유효한건가요?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
안녕하세요 fs 권한 관련 질문드립니다
1. fs 모듈을 이용해서, /etc/hosts 파일을 수정할 때, 유저의 권한 문제를 어떻게 해결해야 할 지 모르겠습니다.웹사이트를 만들고 있습니다. 이 웹은 집중 및 생산성에 도움이 되고자 하는 기능을 담고 있습니다.유저가 특정 링크를 제 웹에 추가하면, 그 링크에 대한 접속을 차단하는 기능입니다. 물론 해제도 할 수 있습니다. 이 기능을 위해서, etc/hosts 파일(맥 기준)에 대한 수정 권한이 필요했습니다. api로 만들어서 해당 기능 함수를 실행시키려 했고, 결과는 permission 에러가 났습니다. 만약, 제 로컬에서, 저만 쓸 용도로 하면은 "sudo 기능함수파일" 을 사용하면 될 해결이 될 문제인데, 다른 사용자들의 로컬에서는 sudo 권한 및 관리자 권한을 어떻게 적용시켜줘야 할 지를 모르겠습니다. read는 잘 됩니다. 아래는 권한 에러가 나오는 곳의 코드와 api를 통해 hosts파일을 수정하려 할 때 나오는 에러입니다// 로직 fs.writeFile(filePath, completeContent, (err) => { if (err) { return console.log('Error!', err); } }); // 에러 Error! [Error: EACCES: permission denied, open '/etc/hosts'] { errno: -13, code: 'EACCES', syscall: 'open', path: '/etc/hosts' } 2. 또, 제가 etc/hosts(맥) 이나 C:\Windows\System32\drivers\etc\hosts(윈) 파일을 수정하는 것이 법적인 분쟁 소지가 될 수 있을까요?권한을 요구하는 작업이다보니, 유저가 제 웹의 기능을 사용하고 나서, 그 후로 다른 작업을 할 때, 안 되는 게 있다면, 이에 대한 분쟁(?) 의 소지가 있을 수도 있겠다는 생각을 했습니다.제 로직은, 차단할 링크를 배열에 담아두고, 그 링크가 hosts 파일의 Line에 추가되있다면, 그 라인만 없애는 식으로 해서, 기존의 내용은 건들지 않습니다. [제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
윈도우-WSL ubuntu에 Hue설치 가능여부
안녕하세요, 강사님.Hue설치를 Server02가 아닌 VirtualBox가 돌아기는 윈도우즈의 WSL-Ubuntu에 설치가 가능한지요?클라우데라 매니저의 클러스터 호스트 서버가 아닌 서버에 Hue를 설체해도 하둡저장소(Server02)에 파일을 저장하고 테이블을 만드는 일이 가능한지가 궁금합니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
동일 VPC내 Private Subnet의 DB 접속 관련 문의
안녕하세요. 쿠버네티스로 오랫동안 힘들어하다가 강사님의 강의로 많이 배우고 서비스 런칭도 준비 중인 개발자입니다. 제가 네이버 클라우드 플랫폼을 통해 쿠버네티스 서비스를 배포하던 중 통신관련 어려움이 있어 문의를 드립니다. VPC 구성192.168.0.0/16Subnet 구성서브넷1: Private, 192.168.0.0/24 - Load Balancer 용서브넷2: Public, 192.168.1.0/24 - DevOps 용서브넷3: Private, 192.168.2.0/24 - k8s 노드용서브넷4: Private, 192.168.3.0/24 - MongoDB용(설치가 아닌 구매형)NAT 설치Private 서브넷의 인터넷 접속을 위해 라우팅 설정 서브넷3에 nodejs로 개발한 frontend와 backend를 각각의 deployment와 service로 배포하였고 정상 동작을 확인했습니다.다음으로, 서비스 노출을 위해 alb.nginx.ingress 컨트롤러를 설치하고 ingress를 배포했습니다. ingress를 배포하면 서브넷1에 자동으로 alb가 생성되고 frontend와 backend가 타겟으로 자동 연동되어 정상적으로 트래픽이 주입되는 것도 확인했습니다.우선, 쿠버네티스를 선택하면서 가장 힘들었던 부분이 서비스 노출이었습니다. 플랫폼 마다 alb와 ingress 설정 부분이 상이했고, 특히 제가 사용하는 nCloud 쪽은 관련 자료도 많지 않았었느데 강사님의 강의가 정말 많은 도움이 되었습니다. 감사합니다.처음에는 Atlas의 mongoDB를 연동해서 테스트를 진행했는데 정상적으로 DB 접속도 되어서 문제가 없었습니다.이제 mongoDB도 nCloud에서 서비스하는 상품으로 변경하기 위해 private 타입은 서브넷4를 선택했습니다. nCloud의 경우 구매형 mongoDB도 VPC내에 설치하는 방식입니다.mongoDB의 접속은 nCloud 내에서만 접속 가능한 private endpoint를 이용했습니다.그랬더니 DB접속이 불가능했습니다.혹시 몰라서 public 타입의 서브넷2에 임의의 인스턴스를 생성해서 backend(pod가 아닌 실제 소스코드)를 설치해서 db접속을 시도하니 정상 접속이 가능했습니다. 동일 VPC내 public SN의 인스턴스가 다른 private SN의 DB로의 접속은 원활하다는 것은 확인했습니다.아마도 pod가 private 서브넷에 있어서 mongoDB의 endpoint를 resolution하지 못하는 것 같습니다. pod에 직접 접속해서 endpoint에 ping을 넣으면 bad address 에러가 반환됩니다.dev@dev:~/REAL_VIS$ k exec -it backend-deployment-65b69f6649-h554c /bin/sh kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. / # ping e80k8.vpc.mg.naverncp.com ping: bad address 'e80k8.vpc.mg.naverncp.com' / # public 서브넷의 인스턴스에서 ping을 넣으면 응답을 하진 않지만 주소(192.168.3.6)가 resolution 되는건 확인했습니다.root@devops:~# ping e80k8.vpc.mg.naverncp.com PING e80k8.vpc.mg.naverncp.com (192.168.3.6) 56(84) bytes of data. ^C --- e80k8.vpc.mg.naverncp.com ping statistics --- 5 packets transmitted, 0 received, 100% packet loss, time 4098ms 이런 경우에는 어떻게 해결을 해야할지 조언 부탁드립니다.감사합니다.
-
미해결
NullPointerException 발생시 트랜잭션 롤백 안되는 이유
@Transactional(rollbackFor = {Exception.class}) public HashMap<String, Object> saveOrder(OrderDto orderDto){ HashMap<String, Object> returnMap = new HashMap<String, Object>(); try{ String orderId = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); Device device = deviceRepo.findDeviceByDeviceId(orderDto.getDeviceId()); if(ObjectUtils.isEmpty(device)){ returnMap.put("resCode", ResMessage.DeviceNotFound.getResCode()); returnMap.put("resMsg", ResMessage.DeviceNotFound.getResMessage()); return returnMap; } orderRepo.save(OrderList.builder() .orderId(orderId) .deviceId(orderDto.getDeviceId()) .totalPrice(orderDto.getTotalPrice()) .couponNum(orderDto.getCouponNum()) .build()); //쿠폰 사용 적용 if(!StringUtils.isEmpty(orderDto.getCouponNum())){ CouponList couponList = couponListRepo.findByCouponNum(orderDto.getCouponNum()); if(!ObjectUtils.isEmpty(couponList)) couponList.setUsed(device); } returnMap.put("resCode", ResMessage.Success.getResCode()); returnMap.put("resMsg", ResMessage.Success.getResMessage()); return returnMap; } catch (Exception e) { returnMap.put("resCode", ResMessage.SystemError.getResCode()); returnMap.put("resMsg", ResMessage.SystemError.getResMessage()); return returnMap; } } 주문하는 api 연습하고 있는데요 ㅠㅠ쿠폰을 사용한 쿠폰으로 적용하는 부분에서 일부로 없는 쿠폰번호를 날려서 NullPointerException을 내봤는데 트랜잭션 롤백이 안되고 주문한 내용이 DB에 적용되더라구요 ㅠㅠ unchecked exception이니까 롤백되는게 맞는거같은데 롤백이 안되서요 ㅠㅠ 혹시 아시는분 있을까요?