묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[Level 1] Qt를 이용한 Python 프로그래밍: 입문편
강의 pdf파일 올려 주시면 안될까요?
강의 잘 듣고 있습니다. 노트 정리도 하면서 들으려니 시간이 많이 걸려서pdf파일 올려 주시면 정리하기 편할것 같습니다.
-
해결됨Next.js App router 기반 Chat GPT 만들기
섹션7 사이드바 &대화페이지 연동 9분50초경 질문
여기도 하나 질문 드릴게 있는데 conversation.ts파일이 'use server'로인해 서버에서 실행되는 함수가 되는데 그럼에도 revalidatePath함수에 절대경로 ('localhost:3000/')이 아닌 루트경로를 넣어도 왜 상관이 없는건지 궁금합니다 ㅠㅠ
-
미해결Flutter로 SNS 앱 만들기
셋팅에 문제가생겼네요
어디서 해결해야하나요
-
해결됨Real MySQL 시즌 1 - Part 2
unique index가 걸린 상황에서 s-lock, x-lock 질문
안녕하세요?먼저 좋은 강의 감사합니다. 7:50쯤 unique 제약조건이 걸린 상황에서 deadlock이 발생하는 경우에 질문이 있어서 글 남깁니다. 말씀주신 시나리오는unique index가 걸린 컬럼이 delete가 수행되면서, 동시에 insert into 구문이 들어오는 상황으로 말씀주셨는데요. unique index는 s-lock을 꼭 필요로 한다면,delete가 선행되지 않는 상황에서도 deadlock이 발생해야되는거 아닌가? 싶습니다. 상상하는 예시는 다음과 같습니다.tx-1 : begin; insert into tab(pk) values(2) (index 2 또는 그 범위에 s-lock) tx-2 : begin; insert into tab(pk) values(2) (index 2 또는 그 범위에 s-lock)tx-1 : commit; -> index 2에 x-lock을 잡으려고 하지만 tx-2가 s-lock을 잡고 있어서 잡을 수 없음 하지만, 실제로 테스트 해보았을 때는tx-1이 commit시에 정상적으로 insert 되고, tx-2는 duplicated key 오류를 반환합니다. 왜 이런지 알 수 있을까요?감사합니다 😃 다시 한 번 생각해보니, tx-1은 pk=2 가 없기 때문에 insert 후 x-lock으로 전환하고, tx-2는 x-lock으로 인해 lock_wait인 것 같습니다. 혹시 맞을까요?delete 가 선행된 경우는 이미 있는 레코드에 tx-1,2가 s-lock이을 잡으면서 delete가 commit된 시점에 tx-1,2가 x-lock을 획득하려는데서 dead lock이 발생하는 것이고요
-
해결됨Next.js App router 기반 Chat GPT 만들기
섹션7 사이드바 &대화페이지 연동 3분50초경 질문
클라이언트 컴포넌트안의 자식컴포넌트들은 자동으로 클라이언트 컴포넌트로 바뀌는데 사용할 자식 컴포넌트를 children으로 처리하면 클라이언트 컴포넌트로 바뀌지 않고 서버컴포넌트로 남기때문에 문제가 발생하지 않는건가요? 그렇다면 그게 가능한 메커니즘은 무엇인지 궁금합니다 ㅠㅠ
-
미해결실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
Remote Tunnel 방식을 이용한 VSCode 환경 연결 중 문의
안녕하세요.강의 잘듣고 있습니다.Remote Tunnel 방식을 이용한 VSCode 환경 연결 강의를 수강하고 문의 내용이 생겨 질문드립니다. Connect를 누르고 connect to tunnel을 눌렀을때우리가 작업하고 있는 vm 이름이 바로 뜬것은 ssh로 접속을 했기 때문인가요?도커에서 환경이(강의에서는 폴더 이름이) 사용자 별로 분리가 된다고 하셨는데보통 같은 vm안에서 하나의 프로젝트를 함께 완성 시키는 경우라도 이렇게 분리해서 개발하나요?아니면 보통 이렇게 분리 되어 있는게 리소스는 하나를 공통으로 쓰고 각자 개발하는데에 유리한건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
REQUIRES_NEW를 호출한 트랜잭션의 롤백
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 김영한님 !REQUIRES_NEW는 완전히 물리적으로 트랜잭션이 분리되어REQUIRED(A 메서드)에서 REQUIRES_NEW(B 메서드)를호출 했을 때 B 메서드에 발생한 예외가 A 메서드에 전파되지 않는다고 이해했습니다.실제 확인을 위해 아래 코드를 구성해@Service @RequiredArgsConstructor public class MeetingService { private final MeetingRepository meetingRepository; private final MemberService memberService; @Transactional public void save() { meetingRepository.save(new Meeting("스터디 모임", LocalDate.now(), LocalTime.now(), "AB3AS2EG")); memberService.save(); } @Transactional(readOnly = true) public List<Meeting> findAll() { return meetingRepository.findAll(); } } @Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional(propagation = Propagation.REQUIRES_NEW) public void save() { memberRepository.save(new Member("김철수")); throw new IllegalArgumentException(); } @Transactional(readOnly = true) public List<Member> findAll() { return memberRepository.findAll(); } }아래 테스트 코드로 테스트를 진행했습니다.@Test void test() { assertThatThrownBy(() -> meetingService.save()) .isInstanceOf(IllegalArgumentException.class); // 롤백 여부 확인 List<Meeting> meetings = meetingService.findAll(); List<Member> members = memberService2.findAll(); assertThat(meetings).isEmpty(); assertThat(members).isEmpty(); }결과를 로그로 분석해보니 MemberService의 트랜잭션은 독립적으로 롤백 발생한 예외가 MeetingService로 전파 전파된 예외로 인해 MeetingService의 트랜잭션도 롤백이런식으로 흐름이 진행됐습니다. 제가 추측하기로는 물리적으로 분리는 되어 있지만 하나의 스레드에서 생긴 커넥션이고 자바의 예외 전파 메커니즘에 따라A 메서드에서 호출한 B 메서드의 예외가 A 메서드에 전파된 것이 아닌가 생각을 했는데요REQUIRES_NEW 사용 시 예외가 전파 되지 않는다. 라고 이해를 했어서 제가 실험한 결과가 맞는지 간과한 부분이 있었던 것인지 궁금합니다 !
-
미해결테스트 with Jest: 제로초에게 제대로 배우기
모듈 모킹 시 메소드 동작 문제
https://github.com/ayden94/jestTestsrc/module.spec.ts에서 jest.mock('./module')를 하면, 모듈이 이상하게 모킹되는 듯합니다. 메소드가 존재는 하지만, 호출할 경우 완전히 말이 안 되는 결과를 리턴해서 toBe가 항상 틀린 것으로 결과가 나옵니다. 모듈 모킹 시도 없이 모듈 그 자체를 가지고 테스트를 해보면 문제가 없는데, 꼭 모듈을 모킹하면 문제가 생깁니다. 고민해봤지만 원인을 모르겠습니다.확인 부탁드립니다.
-
미해결Airflow 마스터 클래스
(맥환경) dag 파일 인식 안됨
안녕하세요. 강사님 강의따라 docker-compose.yaml 수정 후 에어플로우 내렸다가 다시 올렸는데 dags_bash_operator가 local hostdp에서 보이지 않습니다. (다시 내렸다가 올려도 그대로네요..) 올리기 위해 어떻게 접근해볼 수 있을까요? 맥환경이고 캡처와 같이 수정까지 완료된 상황입니당.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계가 없는 조인
연관관계가 없는 조인에 대해 설명하신 부분에 대해 문의 드립니다. 보통 연관관계가 없다고 한다면 외래키로 연결되지 않는 두개의 테이블 이라고 생각할텐데 강의에서는 두 테이블 간 연관관계는 존재하고 연관관계의 컬럼으로 조인하는것이 아닌 , 다른 컬럼으로 조인하는것을 연관관계가 없는 조인이라고 설명하시는것 같아 혼동이 옵니다. 연관관계가 없는 조인 의 경우 두 테이블 간에 외래키가 없는경우에도 연관관계 없는 조인이 가능한건지 아니면 외래키는 있지만 외래키 조인이 아닌 다른 컬럼으로 조인할수 있는것을 연관관계가 없는 조인이라고 하시는건지 알려 주시면 감사하겠습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
프로젝트시작에서 에러
이거는 어떻게 처리하면 되나요실행은 됩니다
-
미해결스프링 핵심 원리 - 고급편
스프링의 빈 후처리기와 프록시 그리고 타겟에 대해 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 항상 강의 잘 보고 있습니다. 강의에서 1.생성 : 스프링이 스프링 빈 대상이 되는 객체를 생성함 2.전달 : 생성된 객체를 빈 저장소에 등록하기 직전에 빈 후처리기에 전달함 ~ 그 후에프록시 적용대상인 클래스가 있으면3.프록시 생성 : 프록시 적용 대상이고, 프록시를 생성하고 반환해서 프록시를 스프링 빈으로 등록한다. 라고 말씀하셨습니다. 그 후에, 생성된 프록시와 어드바이저의 동작 과정을 설명하실 때 , client -> ( proxy <-> advisors ) -> target 이런 동작 과정이라고말씀하셨는데 이 부분에서 이해가 안되는 부분이 있습니다. 1.프록시 객체를 생성했는데 target을 호출하는 이유가 무엇인가요?예를 들어,프록시 객체는 target을 기반으로 만들어진 클래스라고 이해를 했습니다.그러면 프록시 객체는 target의 구현체로서 target의 메소드도 가지고 있고, advisor 메소드도 가지고 있는 것 아닌가요?그래서 그냥 타겟을 호출할 필요없이, 프록시 객체에서 모든 요청을 처리하면 되는것 아닌가요?? 왜 프록시 객체는 advisor을 호출하고, 다시 타겟을 통해서 메서드를 또 실행하는건가요? 즉, 전 프록시 객체를 만든다는 것을 아래와 같은 예시로 이해를 했습니다. 그래서 굳이 target을 다시 호출하지 않고, 프록시 객체가 모든 요청을 처리하는게 맞는거 같은데 왜 target을 다시 호출하는건가요?? // AClasspublic class AClass { public void say() { System.out.println("Hello from AClass!"); }}// LoggingAspectㅇ@Aspect@Componentpublic class LoggingAspect { @Before("execution(* com.example.AClass.say(..))") public void logBefore() { System.out.println("Before calling say method"); }} //Proxypublic class AClassProxy extends AClass { @Override public void say() { logBefore(); // 로그 출력 super.say(); // 실제 AClass의 say 메서드 호출 } public void logBefore() { System.out.println("Before calling say method"); }}감사합니다.
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
JwtProvider 를 Component 로 선언하신 이유가 궁금합니다.
안녕하세요 지식공유자님. 강의에서 JwtProvider 에 @Component 어노테이션을 선언하셔서 스프링이 관리하도록 의도하신 것 같습니다. 그런데, 함수에 static 을 모두 붙이시고, 사용하는 쪽에서는 bean 으로 등록 하지 않고 static util 처럼 사용하시는 것을 확인했습니다.질문은 두가지 입니다.@Component 를 선언하셨음에도 static 메서드를 authService 에서 사용하신 이유가 있으신지.빈으로 만들고서도 static 함수로 사용하는 것에 이점이 있는 것인지.답변 부탁드리겠습니다. 감사합니다.
-
미해결스프링 핵심 원리 - 고급편
빈 후처리기와 프록시 그리고 @Transactional 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 강사님. 항상 강의 잘 보고 있습니다.해당 강의를 듣고 개인 학습을 하던 중에 @Transactional에 대해 궁금한 점이 생겼습니다. 특히, **"@Transactional은 접근 제어자가 public이 아닌 메서드에는 적용되지 않는다"**는 부분에 대해 잘 이해가 되지 않았습니다.저는 이전에 강사님 강의를 듣고, @Transactional을 메서드에 적용할 때 빈 후처리기와 프록시 방식에 대해 아래와 같이 이해했습니다.A 클래스의 A 메서드에 @Transactional을 적용스프링은 해당 메서드에 트랜잭션을 적용할 수 있도록 AOP 기반으로 동적 프록시를 생성함.스프링 컨테이너가 @Transactional이 붙은 메서드를 가진 클래스는 AOP가 적용된 클래스임스프링은 @Transactional이 적용된 메서드를 감지하여, 트랜잭션을 적용하기 위해 AOP 기능을 사용함.스프링 컨테이너에 A 클래스를 bean으로 등록할 때, 빈 후처리기에서 A 클래스의 프록시 객체를 스프링 빈으로 등록스프링에서는 빈 후처리기에서 트랜잭션을 적용하는 프록시 객체를 생성함. 실제 A 객체가 아닌 프록시 객체가 빈으로 등록되며, 이 프록시 객체는 실제 A 클래스의 메서드들을 호출할 때 트랜잭션을 관리하는 추가 로직을 삽입함.그런데 이렇게 생성되고 사용될 때, **"@Transactional은 접근 제어자가 public이 아닌 메서드에는 적용되지 않는 이유"**가 잘 이해되지 않습니다.예를 들어, 아래와 같은 코드에서:public class MyService { @Transactional public void performAction() { // 트랜잭션이 필요한 메서드 } } 프록시 객체는 다음과 같이 생성될 것이라고 생각했습니다:public class MyServiceProxy extends MyService { @Override @Transactional public void performAction() { // 트랜잭션 관련 로직 추가 (시작, 커밋, 롤백 등) // 원래의 MyService.performAction() 호출 super.performAction(); } } 그런데, "왜 @Transactional이 붙은 메서드는 public이 아닌 접근 제어자에는 적용되지 않나요?" 이 부분에 대한 설명이 부족하여 궁금합니다.왜냐하면, 어차피 기존 클래스를 바탕으로 만들어지는게 프록시 객체라면 @Transactional을 적용할때, 접근 제어자가 왜 중요한지 잘 이해가 안됩니다설명 부탁드립니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 코드 관련 질문이 있습니다!
최태현 강사님의 강의를 들으며 잘 배우고 있습니다!강사님의 코드를 보고 이해하며 따라가다가도 코드를 잘못 작성해 오류가 뜨는 경우가 많아 강사님 코드 전체를 보고 클론코딩을 하고 싶어 글 올립니다! 혹시 전체 코드를 받을 수 있을까요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
WINDOWS로 강의 수강
제가 MacOS가 아니라 Windows인데 강의를 원활하게 수강할 수 있나요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
웹서버의 정확한 인식이 궁금합니다.
안녕하세요. 질문이 있습니다. 웹서버가 3.3.3.3에 관해 인식을 어떻게 하는지가 조금 헷갈립니다. 11:31에서 웹서버는 3.3.3.3:23000 이랑 연결되었다고 인식한다고 하셨고(포트번호 언급), 14:03에서는 웹서버에 3.3.3.3:23000, 3.3.3.3:23001을 요청하면 웹서버는 3.3.3.3 과 2번 접속했다고 인식한다고 하셨습니다.(포트번호 미언급) 질문입니다.웹서버는 포트를 인식하는 것 같은데,포트가 달라도 IP가 같다면 하나의 클라이언트가 2번 요청했다고 인식하는 건가요? 정확히 웹서버는 어떻게 인식하는건가요?" 3.3.3.3:23000과 3.3.3.3:23001 요청이 각각 한번씩 들어왔구나. 3.3.3.3의 IP를 가진 클라이언트 하나가 2개의 포트를 사용해서 요청을 했구나. → 같은 클라이언트가 2번 요청했구나 " 이렇게 인식한다는 말씀이신지요? 그러니까 웹서버 입장에서는 포트는 크게 신경을 안쓰는건지요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
Matzip.fig 관련 문의
방금 강의 결제해서 시작하고 있는데, 처음부터 안 되네요.사진 첨부합니다!
-
미해결FreeRTOS 프로그래밍
TaskDelay와 printf 순서
1번 실습 파일에 printf 를 찍을 때 vTaskDelay를 하고나서 왜 Printf를 찍나여? 뭔가 의미상으론 태스크가 할일(Printf 찍는 것)을 하고 Delay에 빠지는게 맞는 것 같은데 왜 TaskDelay 이후에 printf를 찍는 지 궁금합니다. vTaskDelay (pdMS_TO_TICKS (1000)); // 스스로 휴면상태에 들어감 Blocked로 다시 1000ms 후running printf("b"); fflush(stdout); // 문자 'a' 출력
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문이 있습니다.
제가 처음 작성했던 코드는 다음과 같습니다. 1번 코드 (처음 작성한 코드) http://boj.kr/a88f71f09ca849eab6009b62163b7a562번 코드 (substr 활용한 코드) http://boj.kr/589098635bfd4acb8726f8a5cbc18157선생님 풀이를 보고 substr을 활용해서 작성해 봤을 때, 사이즈 체크 조건문에 대해 질문이 있어서 글 남깁니다. 1번 코드에서는 사이즈 체크하는 조건문과 패턴을 확인하는 조건문을 같은 시점에 비교해도 정답이 나왔습니다. 하지만 2번 코드에서는 사이즈 체크를 먼저하고 -> 그 이후에 사이즈 조건을 만족할 때 패턴을 비교하는 코드를 넣어야만 올바른 답이 도출됩니다.이게 왜 차이가 나는것인지 설명해주시면 감사하겠습니다!