묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
병렬 테스트 시 DB처리
안녕하세요 강의 정말 잘 듣고 있습니다~!한가지 궁금한 점이 있는데,테스트 병렬 실행 시에 db는 어떻게 관리되는지 궁금합니다.테스트가 많아지면서 병렬로 실행하고 싶은데,db는 지금 h2 mem db 한군데만 바라보고 있어서테스트 간 같은 항목에 대한 처리들을 하면 실패로 이어집니다.어떻게 병렬로 실행할 수 있게 하는지 궁금합니다 ㅎㅎ그리고 인수테스트(RestAssured)도 진행중인데,인수테스트는 병렬 실행을 포기하는 편인지도 궁금하네요..
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
비교연산자와 반복문+조건문 문제 풀이
11:00 문제에서 count += i; 이게 2의배수이면서 3의배수가 아닌 값일 떄에 count 와 i 값을 더해주면 되는건가요??비전공자라서 설명이 너무 부족합니다 ㅠㅠ
-
미해결아두이노와 떠나는 사물인터넷 여행 - 아두이노 입문부터 IoT 중급까지!
wifi 연결이 안됩니다ㅜㅜ
wifi이름이랑 비밀번호도 제대로 적었는데 계속 '.' 만 나오면서 시도만 하고 와이파이 연결이 안되네요ㅠㅠ 이건 무슨 문제인가요,,? (맥북으로 연결하면서 실습중입니다..)
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
RAG에서의 chain 코드
chain 연결하는 | 문법을 사용하지 않는 이유가 있을까요?
-
해결됨Next + React Query로 SNS 서비스 만들기
connect.sid 삭제가 되지 않습니다.
개별적으로 서버를 만들어서 진행중입니다.// 로그인시 서버에서 발급하는 코드 response.cookie('connect.sid', accessToken, { httpOnly: true, sameSite: 'none', secure: false, }); // 프론트에서 아래와 같이 저장 if (res.ok && res.status === 204) { let setCookie = res.headers.get("set-cookie"); if (setCookie) { const parsed = cookie.parse(setCookie); cookies().set("connect.sid", parsed["connect.sid"]); const user = jwtDecode(parsed["connect.sid"]); return { ...user, }; } } // 서버에서 삭제하는 코드 logout(request: any, response: Response) { const { user } = request; response.clearCookie('connect.sid', { httpOnly: true, sameSite: 'none', secure: false, }); ... }로그인 하면 서버에서 쿠키 설정 -> 프론트에서 저장을 진행한 후, 로그아웃시 위 코드처럼 삭제하도록 하고있습니다.강의 하단부에 작성해주신것 처럼 아래와 같이 events부분에 작성하였는데 쿠키 삭제가 되지 않습니다 ㅠㅠ events에 넣지 않고 강의 그대로 했을 때는 s%3..으로 바뀌어서 삭제되지 않습니다. events에 넣었을때는 아예 값도 바뀌지 않고 삭제되지 않습니다. 어떤 작업이 필요할까요 ㅠㅠ //auth.ts events: { signOut: async (data) => { const token = cookies().get("connect.sid"); if (!token) return; const res = await logout(token.value); console.log("signOut"); }, }, // logout fetch export const logout = async (token: string) => { const res = await fetch(`${BASE_URL}/logout`, { method: "POST", headers: { Authorization: `Bearer ${token}`, }, credentials: "include", }); return res; };
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
api 서버를 만들 때 로그인 하지 않은 사람이 인터셉터에 걸린 경우
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이런 경우는 api 서버라 로그인 페이지로 리다이렉트 시킬 수도 없는데 사용자가 요청이 거절되었다는 것을 어떻게 알려줘야 하나요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
스켈레톤 사용 불가
현재 제가 사용하고 있는 플러터 버전(3.22 stable)에서Theme.of(context).backgroundColor가 deprecated 된 것 같은데 스켈레톤 라이브러리 가장 최신버젼에서 해당 코드를 사용하고 있어 라이브러리를 땡겼을 시 에러가 나는 것같습니다.제가 잘못 알고 있는 부분이 있다면 알려주시면감사하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4주차는 개념강의만 들어도 괜찮을까요?
오랜시간 고민하다 강의를 보면서 힌트를 받아 4-A를 풀었습니다.허나 정말 빠르게 취준을 목표로 삼고있다면 비트마스킹은 스킵해도 될까요? 선택과 집중을 하고싶습니다,,물론 다 알아가면 좋지만 bfs나 dfs나 dp같은 문제들을 더 풀어보는게 좋을지 비트마스킹은 간단하게 알고 지나가도 괜찮은지 궁금합니다..항상 좋은 강의 감사합니다.
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
연결리스트 숙제
prev와 tail을 이용해서 만들어 봤습니다! 궁금한점이 하나 있는데 remove 메서드의 if (current)의 else 부분은 필요하지 않은것 같아서 구현하지 않았는데 문제가 있지는 않나요?class LinkedList { length = 0; head = null; tail = null; add(value) { const newNode = new Node(value); if (this.head) { this.tail.next = newNode; this.tail = newNode; } else { this.head = newNode; this.tail = newNode; } this.length++; return this.length; } search(index) { return this.#search(index)[1]?.value; } prevSearch(index) { return this.#search(index)[0]?.value; } #search(index) { let count = 0; let prev; let current = this.head; while(count < index) { prev = current; current = current?.next; count++; } return [prev, current]; } remove(index) { const [prev, current] = this.#search(index); if (current) { if (prev) { prev.next = current.next; } if (current.next) { current.next.prev = prev; } if (current === this.tail) { this.tail = prev; } } this.length--; return this.length; } } class Node { next = null; prev = null; constructor(value) { this.value = value; } } const li = new LinkedList(); li.add(1); li.add(2); li.add(3); li.add(4); li.add(5); li.add(6); console.log(li.prevSearch(2)); console.log(li.remove(4)); console.log(li.search(4)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(2)); console.log(li.remove(1)); console.log(li.tail.value); console.log(li.remove(0));
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Atomic 변수와 Lock을 둘 다 사용하는 이유가 궁금합니다
Atomic 변수를 사용함으로써 Distribute 함수에 하나의 쓰레드만 들어오는게 보장된 것 같은데 굳이 Lock 또 다시 사용하는 이유는 Distribute 함수 말고도 다른 곳에서 items 라는 컨테이너에 접근할까봐(지금은 아니지만) 이렇게 작업하신걸까요?
-
해결됨개발자를 위한 쉬운 도커
설명 질문입니다..!
강사님 안녕하세요~!강사님 강의 덕분에 도커에 대해 많이 알아가고 있어서 좋습니다!!혹시 강의 내용 중02:00: IP주소는 8바이트04:22: IP주소는 8바이트라고 설명해 주시는 부분을 8비트로 이해하면 되는 게 맞나 싶어서 문의드려요!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
PickType
현재 PickType 활용하기를 듣고있습니다.위에서 PickType 은 값을 반환을 하고 Pick 은 타입을 반환한다고 말씀을 주셨는데요.PickType 이 값을 반환 한다는 말씀이실제로 어떤 값을 반환하는것이 아니라 request dto 역할로 데이터가 key : value 로 들어오니까 단순 타입이 아니라 값을 받기때문에 값을 반환한다 라고 이해를 해야할까요 ??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트에서 중복회원 에러가 뜨지 않고 통과됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]MemberServiceIntegration 클래스서 회원가입 test를 실행시켰을 때, '이미 존재하는 회원입니다.'라는 에러가 뜨지 않고 "A Java agent has been loaded dynamically" 이런 경고만 뜨면서 test가 실행됩니다. 버전 업그레이드 문제일까요?
-
해결됨스프링 핵심 원리 - 기본편
6장 컴포넌트 스캔 - 필터
안녕하세요.강의자료-탐색 위치와 기본 스캔 대상 탐색할 패키지의 시작 위치 지정 문단에서만약 지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다.라고 읽었습니다 아래 코드에서 질문있습니다.(필터 문단 예제)package hello.core.scan.filter; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; public class ComponentFilterAppConfigTest { @Test void filterScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); Assertions.assertThat(beanA).isNotNull(); org.junit.jupiter.api.Assertions.assertThrows(NoSuchBeanDefinitionException.class , ()->ac.getBean("beanB",BeanB.class)); } @Configuration @ComponentScan( includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION , classes = MyIncludeComponent.class), excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION , classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig { } }위코드는 강사님이 써주신 코드와 일치하는 코드 입니다. 여기에서 @ComponentScan( includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION , classes = MyIncludeComponent.class) 를 제외 했을때 즉 beanA를 포함 하는 코드를 지웠습니다. 그러면 아래와 같은 코드가 됩니다.package hello.core.scan.filter; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; public class ComponentFilterAppConfigTest { @Test void filterScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); Assertions.assertThat(beanA).isNotNull(); org.junit.jupiter.api.Assertions.assertThrows(NoSuchBeanDefinitionException.class , ()->ac.getBean("beanB",BeanB.class)); } @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION , classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig { } } 위코드에서 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanA' available 에러가 발생하는 이유가 궁금합니다.. 위 예제에서 @ComponentScan이 붙은 설정 정보 클래스와 beanA클래스는 같은 패키지 내에 있습니다. @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 됨으로 같은 패키지 내에 존재하는 BeanA클래스 객체는 스프링빈으로 등록되는거 아닌가요?
-
미해결스프링 핵심 원리 - 기본편
싱글톤패턴 DIP 위반
[질문 내용]싱글톤 패턴 문제점에서 getInstance() 사용시 DIP를 위반한다고 하신 점이 이해가 잘 안가서 직접 구현해보았습니다. 제가 이해한 내용이 맞나요...? [구현 내용]싱글톤 객체의 의존성 주입에 관한 문제이므로, SingletonService에 주입한 SingletonRepository를 생성하였습니다.public class SingletonRepository { private static final SingletonRepository instance = new SingletonRepository(); public static SingletonRepository getInstance() { return instance; } private SingletonRepository(){} } SingletonService에 SingletonRepository 필드를 추가합니다.public class SingletonService { private SingletonRepository singletonRepository; ... }DIP를 지키기 위해선, DI를 해야합니다. 하지만 SingletonService에 의존관계를 주입할 수 있는 방법이 없습니다...생성자 주입 방법: 추가 객체 생성을 막기 위해 생성자를 막아놓았으므로 불가.필드 주입, setter 주입, 일반 메서드 주입: 스프링 기술, 순수 자바 코드로 주입 불가.클라이언트코드인 SingletonService가 SingletonRepository를 사용하기 위해 다음과 같이 구현체에 의존해야 합니다. public class SingletonService { private SingletonRepository singletonRepository = SingletonRepository.getInstance(); ... }따라서 순수 자바 코드로 싱글톤 패턴 구현 시 DIP를 위반합니다.
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
프롬프트 기법에 대한 소식을 어디서 얻을 수 있을까요?
단편적으로 프롬프트는 이렇다를 넘어서서 그런 최신의 정보를 얻으려면 어디서 얻어야할까요?감사합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
타임리프 if문 질문이 있어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.1.item.html에 param.status의 반환 타입이 궁금합니다!첫번째 코드가 강사님코드고 두번째가 제 코드인데 강사님코드는 false로 바꿔도 작동하는등 문제가 있고 제 코드는 작동하는데 이 이유가 뭘까요??<h2 th:if="${param.status}" th:text="'저장 완료!'"></h2> <h2 th:if="${param.status.get(0)}" th:text="'저장 완료!'"></h2>
-
미해결스프링 부트 - 핵심 원리와 활용
MyDataSourcePropertiesV1 스프링 빈으로 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 좋은 강의 잘 듣고 있습니다!!이번 강의를 들으면서 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class)를 통해 MyDataSourcePropertiesV1.class 클래스를 스프링 빈으로 등록해야지 외부 설정을 읽어서 해당 클래스에 바인딩하고 Config에서는 그걸 주입 받아 DataSource에 주입하는 걸로 이해를 했습니다.여기서 저는 단순히 스프링 빈으로 등록하는 거라면@Import를 사용하거나 MyDataSourcePropertiesV1.class에 @Component를 붙여서 컴포넌트 스캔 대상이 되도록 하는 등의 방법으로 해도 잘 동작하는게 아닐까? 라는 생각에2가지 다 사용해서 테스트를 진행했는데 별문제가 없었습니다.분명히 @EnableConfigurationProperties을 만든 이유가 있을듯한데 저의 짧은 지식으로는 잘 모르겠습니다.@ConfigurationPropertiesScan은@ConfigurationProperties가 붙은 클래스를 마치 컴포넌트 스캔과 같이 간편하게 스프링 빈으로 등록할 수 있다는 장점이 보이지만 @EnableConfigurationProperties 이 친구는 정말 모르겠습니다
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
피그마 파일 임포트가 안됩니다.
맛집 파일 업로드 하려고 하면 unable to import file 이라고 뜨네요.
-
미해결Do it! SQL 입문
테이블 서로 통합하는 조인 알아보기(2) _ like '%Micro%' 관련 질문
like '%Micro%' 하고 나면 symbol에 해당 Micro가 포함된 심볼이 나와야 할텐데 왜 결과값이 MCHP 이런것들이 나오는지.. 정말 이해가 안갑니다 ㅠ