묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 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 이런것들이 나오는지.. 정말 이해가 안갑니다 ㅠ
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
JDK 17 업데이트
안녕하세요! 좋은 강의 감사합니다.우선 저는 현재 JDK 11 버전을 사용하고 있습니다(openjdk version "11.0.21")강의에선 JDK 17 버전을 사용하던데, 11버전을 17로 업데이트해도 기존 프로젝트를 실행 시키는 데 문제가 없을까요?? 스프링부트 2점대와 3점대를 번갈아가며 사용중인데 혹시 버전을 올렸을 때 돌아가지 않는 프로젝트가 생길까 염려되어 질문 남깁니다.그리고 혹시 문제가 있을 수 있다면 JDK 11버전을 사용해도 강의를 끝까지 따라가는 데 문제가 없을까요?
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
api key 호출 시
랭체인은 env파일에서 자동으로 openai key를 가져오는 것으로 알고 있습니다.강의 영상 처럼 불러와서 넣어주는 이유가 따로 있으실까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 무엇이 잘못되었을까요?
예제는 다 통과하는데 제출하면 틀렸다고 나오네요..bfs를 통해 풀었는데 뭐가 문제인지 잘 모르겠습니다./****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <vector> #include <queue> std::vector<int> tree[50]; void bfs(const int start, const int removeNumber) { bool visited[50] = {false, }; std::queue<int> que; que.push(start); visited[start] = true; int curr = 0; int count = 0; while(que.empty() == false) { curr = que.front(); que.pop(); for (int i = 0; i < tree[curr].size(); ++i) { if (!visited[tree[curr][i]] && tree[curr][i] != removeNumber) { if (tree[tree[curr][i]].size() == 0) { count += 1; continue; } que.push(tree[curr][i]); visited[tree[curr][i]] = true; } } } std::cout << count << "\n"; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int N, temp, removeNumber; std::cin >> N; for(int i = 0; i < N; ++i) { std::cin >> temp; if (temp == -1) { continue; } tree[temp].push_back(i); } std::cin >> removeNumber; if (removeNumber == 0) { std::cout << 0 << "\n"; return 0; } bfs(0, removeNumber); return 0; }
-
미해결뿌리 깊은 딥러닝
loss function 설명에서 질문
복잡한 모델일 수록 local minima와 global minima 의 차이가 거의 없다고 하셨는데요 복잡한 '모델' 이라는 점에서 이 '모델'은 layer로 구성된 neural network 인가요 아니면 loss function을 의미하는 것인가요 ?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 9251
안녕하세요 강의 잘 듣고 열심히 따라가고 있습니다. ㅎㅎ Dynamic Programing 강의를 듣는 도중 궁금한점이 있어 질문 드립니다. 백준 9251문제는 Longest Common Subsequence를 구하는 문제인데 강의 내용에서 3가지 접근법인 브루트포스, 그리디, DP 순으로 설명해주시고 똑같이 따라하려고 노력하고 있습니다. 2가지 질문사항이 있습니다. 제가 생각해본 풀이가 브루트포스, 그리디, DP중 어느 풀이에 속하는지 궁금 합니다. 제가 생각해낸 풀이 Dictionary를 활용하여 LCS를 구하는 방법인데요. S1에 문자가 나온 횟수를 Dictionary로 저장하고 S2에 문자가 중복해서 나온 횟수를 빼주어 0이 되는 문자의 개수를 세는 방법입니다. 또한 이 방법으로는 백준 통과가 안되구요. 왜 안되는지 궁금합니다.코드는 아래와 같이 작성하였습니다.s1=list(input())s2=list(input())#print(s1,s2)dicts = dict()for i in s1:if i not in dicts:dicts[i]=1else:dicts[i]+=1common=[]for j in s2:if j in dicts:dicts[j]-=1if dicts[j]==0:common.append(j)print(len(common)) 감사합니다.