묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 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이니까 롤백되는게 맞는거같은데 롤백이 안되서요 ㅠㅠ 혹시 아시는분 있을까요?
-
미해결왕초보를 위한 네트워크 기초
수강기한 관련
안녕하세요 네트워크 지식을 쌓기위해 강의신청하게 되었습니다. 나중에도 궁금한게 생겼을 시 강의를 보고 반복학습을 하고싶은데 강의기간이 존재하여 반복학습이 힘들어지는 경우가 생길 듯 한데 수강기한제한을 풀 계획이 있으실까요~? 직장인이라 짬내서 듣어야 할 듯해 제한이 없다면 다음강의 진행도 부담이 덜할듯 해서요~ 우선 시작한 강의는 잘 듣겠습니다 감사합니다~!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
"Bad CPU type in executable"
안녕하세요,플루터 설치까지 마치고 'flutter doctor'를 실행했는데"Bad CPU type in executable"이라는 에러메세지를 주네요.intell mac이고 모두 정상설치했습니다.해결방법이 있을까요?
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
CalendarView 사용에 관해 질문있습니다.
유투브와 인프런 강의를 들으며 개인적으로 어플리케이션을 만들던 중 기능구현에 문제가 발생했습니다. CalendarView에서 리스트에 담긴 특정날짜들을 읽어와해당하는 날짜들을 CalendarView에서 비활성화 하고 싶습니다. 혼자 검색을 해보았지만 번역된 방법을 보아도 모르겠어서 이렇게 질문드립니다,
-
미해결스프링 핵심 원리 - 기본편
복습 중인데 갑자기 null point 오류가 나네요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]복습하고 있는데 오류가 나서 검색해보다가 답이 안나와 질문드립니다. 공유링크: https://drive.google.com/file/d/1lSZZAWDOc1GeznWl-pMsibX09JZ2c2LD/view?usp=sharing아무래도 몬가 컨테이너 설정을 잘못한거 같은데 여러번 반복해도 답이 안나오네요...원래는 디비도 연결해보고 여러가지 해보았는데 결국 못찾고 질문 올립니다. package com.example.test; import com.example.test.repo.MemoRepo; import com.example.test.repo.MemoRepoImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class SpringConfig { private final EntityManager em; public SpringConfig(EntityManager em) { this.em = em; } @Bean public MemoRepo memoRepo() { return new MemoRepoImpl(em); } } package com.example.test.repo; import com.example.test.Memo; import javax.persistence.EntityManager; import java.util.Optional; public class MemoRepoImpl implements MemoRepo{ private final EntityManager em; public MemoRepoImpl(EntityManager em) { this.em = em; } @Override public Memo save(Memo memo) { return null; } @Override public Optional<Memo> findById(long memoId) { return Optional.empty(); } @Override public void remove(Memo memo) { } @Override public void updateContents(long memoId, String content) { } }
-
미해결스프링 핵심 원리 - 기본편
제가 이해한바가 맞을까요.. ?
이해가 안되서 강의를 돌려보다가 따로 정리해봤는데,1번. CoreApplication의 main메서드를 실행시키면 현재로서는 에러가 나는게 맞지만, 동작순서만 보자면 CoreApplication의 main메서드를 실행시키면 실행될때 스프링컨테이너가 생성되고 컴포넌트스캔이 되서 @Controller, @Service에 의해 각각LogDemoController, LogDemoService 빈 등록이 일어난다.그리고 또, main메서드가 실행되고있는동안(런타임동안=프로그램이 실행되고있는동안) DI가 일어난다. 그리고나서 고객이 localhost:8080/log-demo로 url을 입력하면 http요청이 들어온것이므로 이때 컴포넌트 스캔이되서 @Component에 의해 자동으로 MyLogger빈이 등록되고 초기화메소드가 실행된다. 그러고난후 @RequestMapping("log-demo")로 되어있으므로 logDemo()메소드를 실행하고, return "OK"로 응답을 준 후에 종료 메소드가 실행된다. 2번. 오류가 나는 이유를 3가지로 정리해봤는데 어떤게 더 적절한 이유일까요..?코드가 오류나는 이유는 런타임동안에 DI를 해야되는데 MyLogger가 request빈인데, 아직 http요청이 오지않아서, MyLogger빈이 생성되지않았고 그래서 의존관계주입이 안되니 오류나는것이다.요청이 들어오지않은 상태에서 DI를 하려니 오류가 발생하는거고, main메서드를 실행하고나서 요청이 오더라도 DI를하는시점에는 MyLogger빈이 스프링컨테이너에 없어서 오류나는것이다.스코프 리퀘스트를 붙이면 요청이 들어오는 시점에 빈이 생성되는데 요청이 들어오질않았으니 빈이없고, 없는 빈을 di하려해서 오류가 나는것이다. 이렇게 이해하면 될까요 ..?
-
미해결배달앱 클론코딩 [with React Native]
java project 관련 그리들 에러
npm에서 지웟고 clean햇는데 게속 저렇게 남아있어서 에러뜨는데 어떻게 지울까요 ?..그리고 Geolocation.watchPosition 쓰는데 2~3초후에 값들어오는데 marker찍으면 왜 출력이안될까요 ....
-
미해결실전! Querydsl
Deprecated
querydsl 5.0 버전부터 fetchResult() , fetchCount()가 Deprecated 되서 공식문서에서는 이 두 메서드 대신에 fetch.size를 권장 한다고 합니다 https://devwithpug.github.io/java/querydsl-with-datajpa/참고 하실분 참고하세용
-
미해결JIRA를 활용해 더 효과적으로 프로젝트 협업하기
프로젝트 생성 방법의 차이에 대한 질문
보드탭에서 Create board 로 프로젝트를 생성하는 것과 프로젝트 만들기 버튼을 통해 프로젝트를 생성하는 것의 차이가 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
IPAdress관련 질문입니다.
안녕하세요. 양질의 수업 잘 듣고 있습니다!string host = Dns.GetHostName(); IPHostEntry ipHost = Dns.GetHostEntry(host); IPAddress ipAddr = ipHost.AddressList[0]; IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);Unity 클라이언트의 위 코드를 IPAddress ipAddr = IPAddress.Parse("45.157.574.15"); IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);이렇게 제 외부 IP 주소를 넣고 서버를 켠 후 클라이언트를 다른 컴퓨터에서 실행시켜 봤는데 연결이 안되더라고요... (포트 포워딩도 했고 예제 샘플로도 시도해봤습니다.)구글링을 해봐도 IP주소를 저렇게 지정하면 된다고만 나와있어서 어떤 식으로 더 찾아봐야할지 감이 안잡히네요... 코드 자체에는 문제가 없고 공유기 설정과 같은 외부 문제 코드 자체가 문제강사님이 보시기에는 어느 부분이 문제일 거 같은지 단서라도 주시면 더 열심히 찾아보겠습니다.더 찾아보다가 너무 오래걸려서 작은 힌트라도 얻고자 질문드립니다..
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
Paging3 적용하지 않고 ProgressBar
강의에서는 PagingAdpater의 addLoadStateListener를 통해 로딩상태를 인식해 프로그래스바를 보여주는데 일반 ListAdapter는 addLoadStateListener 같은 메서드가 없더라고요 ㅠㅠ 일반 ListAdapter 에서 RecyclerView를 그리기 전에 로딩상태를 알아서 프로그래스바를 보여주는 방법은 없을까요?
-
미해결실전! 스프링 데이터 JPA
delete 쿼리의 join
제가 delete쿼리를 join해서 사용하고 싶은데제가 시도했을 때는 jpql은 join도 불가하고 @EntityGraph로도 안되더라고요 그럼 delete시에는 다른 테이블과 join하는 방법이 없나요??(jpql이나 스프링 데이터 jpa를 사용시에)
-
해결됨홍정모의 따라하며 배우는 C언어
버퍼가 헷갈려요
int get_integer() { int input; char c; while (scanf("%d", &input) != 1) { while ((c = getchar()) != '\n') putchar(c); printf(" is not an integer.\n Please try again : "); } return input; }제가 맞게 이해한건지 모르겠는데여기서 putchar(c)에 들어가는건 while (scanf("%d", &input) != 1)에서 scanf의 형식지정자가 맞지않아 뱉어낸 버퍼에 남아있던 값이 맞나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DI 의존성 주입 질문
안녕하세요 DI 관련해 질문이 있습니다.```java @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } } private final MemberService memberService; final 키워드를 붙여주는 이유가 궁금합니다.memberSevice 를 변경하지 못하게 하는 이유가 무엇인가요?