묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
principal에 넣어주는 값
ajaxauthenticationprovider 에서 인증이 성공하면 accontContext.getAccount()를 담은 토큰을 반환해주는데... principal 프로퍼티에는 UserDetails 구현체가 들어가야 하는것 아닌가요?? account는 그냥 entity이고 accountContext가 User를 상속해서 UesrDetails 구현체니깐 accountContext가 들어가는게 맞는것 같다는 생각이 들어 질문드립니다. 미리 답변 감사드립니다.!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part8: Entity Framework Core
SELECT 후에 디비 업데이트 질문이 있습니다
SelectLoading 이나 DTO 형태처럼 일부 데이터만 가져온 뒤에 업데이트하는 방법은 없는건가요? Select 할때 모든 데이터를 가져오는게 아니라 특정 컬럼만 가져와서 업데이트 하는 경우입니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 LB 관련 질문 드려요!
안녕하세요 강사님. GatewayFilter 처리 과정에서 궁금한점 질문해요. [spring cloud 공식문서](https://cloud.spring.io/spring-cloud-gateway/reference/html/) 참고하면서 강의를 듣고 있는데요 예제의 GatewayFilter는 real server(ex: localhost:9000/service1/**)의 url path pattern(service1) 을 통한 load balancing 인 것 같은데요. 제가 구현하고 싶은 LB는 어떠한 real server의 pattern을 갖고 처리하는 것이 아닌 .. - ex myService: localhost:1234/v1/api/helloworld gateway: localhost:8080/myservice/v1/api/helloworld Q1. pattern 없이 그냥 gateway server uri:8080/myservice/** 면 myService server 로 LB 되게 하고싶어요. 어떤 주제로 검색 해보면 될까요? 안되는걸까요? Q2. spring cloud gateway를 담당하는 application server는 reverse-proxy 라고 할 수 있을까요? 감사합니다. 🙇🏻♂️
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
판다스와 판다스 프로파일링 버전 문제
안녕하세요. 선생님 설 연휴에도 고생 많으십니다. 다름이 아니라 판다스 프로파일링 버전 문제로 계속 에러가 나는 거 같아서 버전을 업데이트 하고자 하는데 아래와 같이 계속 에러가 나네요..ㅜ 어떻게 하면 해결할 수 있을까요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
join보다 쿼리빌더가 더 좋은 이유는 무엇인가요??
17:39초쯤에 조인보다 쿼리빌더를 선호하신다고 하셨는데, 어떤 점에서 조인보다 쿼리빌더가 더 좋은지 궁금합니다! 또한, 조인과 릴레이션스의 차이는 무엇인지요? 릴레이션스가 약간 팝퓰레이터 같은 것인가요?? 업무가 바빠서 오래 못보다가 오랜만에 봤더니 헷갈리는데 릴레이션스-팝퓰레이트 같은것은 노릴레이션구조상 배열이 들어가니까 배열을 가져오는 것이고 조인은 교차테이블 개념으로 만들어서 가져오는것인가요? 쿼리빌더는 서브쿼리같은것인가용??
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
redirect , session
안녕하세요. 강의 듣다가 헷갈린 부분이 있어 질문 남깁니다 redirect 는 forward 와 다르게 요청 정보가 유지되지 않은 걸로 아는데 MemberLoginController 에서 세션을 만들고 memberList.do 로 redirect 를 할때 이때 만들어 놓은 session 을 memberList.do에서 받을 수 있는 건가요 ???
-
미해결호주 현직 자바 개발자가 묻고 답하는 영어 기술면접 25
접근제한자의 차이 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 추상클래스는 모든 접근제한자가 사용 가능하고 인터페이스는 오직 public만 가능하다고 정리해주셨는데 두 클래스의 접근제한자 사용 가능 여부가 차이나는 이유는 무엇인가요? 단일 상속과 다중 상속의 차이 때문인가요?
-
미해결15일간의 빅데이터 파일럿 프로젝트
클라우데라 매니저 접근 후 다음으로 넘어가지 않습니다.
클러스터 로그인 후 Welcome 페이지 -> select edition 이후계속 버튼을 눌러도 다음으로 진행이 되지 않습니다. 빈페이지로만 나옵니다. 실습 진행이 되지 않는데 해결할 수 있는 방법이 없을까요?
-
미해결Nuxt.js 시작하기
포트 변경시 접속이 안됩니다
콘솔창에 정상적으로 주소가 뜨고 그 주소를 클릭하거나 주소창에 입력하면 localhost에 대한 액세스가 거부됨 이 페이지를 볼 수 있는 권한이 없습니다. HTTP ERROR 403 이렇게 뜹니다
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
Self Join 질문이요
self join 할 때 Employee.managerid = Manager.id 를 하는데 조인할 때는 같은 콜럼끼리만 가능한거 아닌가요?? managerid랑 id는 다른 테이블인데 이게 왜 가능한건지 궁금합니다~!
-
미해결만들면서 배우는 리액트 : 기초
와~ 선생님 이거 너무 편한데요?
와~ 이렇게 배포하는 방법이 있었네요^^ 선생님, 그런데 gh-pages 브랜치를 따로 만들어서 배포하는 방식과 이 방식의 차이점이 있을까요? 이 방식을 더 권장한다던가, 더 최신의 방법이라던가~ 아무튼 이 방법은 main 브랜치에 바로 적용이되니 push만 해도 변경사항이 바로 적용이 되서 너무 좋네요~
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
import antd 질문입니다.
message.info 랑 message.error를 사용하셨었는데 antd를 import 하실때 Button 만 import 하시고 message는 import 하는 부분이 영상에는 없었던거 같은데 그러면 컴파일 할 때 에러가 나지 않나요? 저는 에러가 발생해서 소스 코드랑 비교해보니 message import 하는 부분이 없어서 message 추가하고 나서 정상적으로 됐었거든요
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
pandas-profiling과 wordcloud 설치 문제(5.도시공원 표준 데이터 활용)
밑의 사진과 같이 pandas-profiling이 설치가 안되는 것 같아요. you may need to restart the kernel to use updated packages. 계속 이런 에러 메세지가 뜨는데 해결방법은 무엇일까요? anaconda prompt로 들어가서 관리자 권한으로 실행해도 잘 안되네요.
-
미해결아이폰 앱 개발 입문 1편
xcode 화면 ui 가 달라서 따라갈수가 없어요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. main.storyboard 로 수업진행이 되는데 제 화면에서는 보이지가 않습니다.
-
해결됨초보를 위한 쿠버네티스 안내서
Ingress 질문
안녕하세요. 수업 잘 듣고있습니다. ingress 의 echo v1,v2 예제에서,.. v1과 v2는 둘 다 3000포트로 코딩이 되어있어 각 ingress를 등록시 3000으로 하는데요, 실제, 여러 앱이 쿠버네티스 클러스터에 올라가있는경우 서비스포트가 다 각자 다를 수 있을텐데, 그럼 각각 ingress에 다른 포트를 지정해놓고, 결국 외부에서는 80을 통해 각기 다른 포트를 가진 서비스를 로드밸런싱하면서 도메인 분기만으로 호출하도록 하는것이 가능한것인지요?
-
미해결스프링 핵심 원리 - 기본편
private final ObjectProvider<Mylogger> myLoggerProvider
안녕하세요 강의 잘 듣고 있습니다! 질문이 있는데요. private final Mylogger myLogger -> 위 변수 선언 시 , 일반적으로는 빈으로 등록되고 의존관계주입도 되며 생성자를 통한 초기화까지 일어나게 된다고 배웠습니다. private final ObjectProvider<Mylogger> myLoggerProvider -> 하지만 위의 경우 myLoggerProvider.getObjcect() 시에 빈을 찾아오고 없으니까 그 때 생성해서 가져오는 것으로 이해하였습니다. -> 그렇다면 , 위 변수 선언 문장에서는 단순히 선언만 하고 끝나는 것인가요? 선언 시에는 빈등록도 안되어 있을테고 , 의존관계 주입도 안되며 초기화도 안될 것 같아서요!
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 개발: Order 설계 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 주문과 할인 도메인 개발 (3:30) 부분에 나오는 내용입니다. calculatePrice와 같이 계산이 필요한 필드를 OrderService가 아닌 Order 도메인에 포함시킨 이유가 무엇인가요? calculatePrice도 일종의 비지니스 로직이라는 생각이 들어, 이 필드가 Service가 아니라 Domain 자체에 포함되어 설계된 이유가 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
새해 복 많이 받으세요!
진짜 유익하게 듣고 있습니다 !!
-
해결됨홍정모의 따라하며 배우는 C언어
다중 구조체로 구성된 자료구조에서 위치를 이동하는 함수 구현에 대한 질문입니다.
안녕하세요. 이 강의를 완강하고 부록 강의도 수강하다 의문이 생겨 질문드립니다. 이 강의와는 좀 거리가 있는 질문이긴 하지만 부록 강의에 올리면 질문 확인에 시간이 오래 걸릴것 같아 부득이하게 여기에 올립니다. 해당 코드는 제가 이진 트리(부록 강의 17.17)예제의 일부를 풀어본 것입니다. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #define TMAX 20 #define MAXITEM 20 #define SPACING 30 void initialize(Tree* ptree); bool empty_tree(const Tree* ptree); bool full_tree(const Tree* ptree); int item_count(const Tree* ptree); int compare(const Item first, const Item second); Node* make_node(const Item* pi); // 요점 void move_to_index(movies** Head, int index); // 구현 목표 bool add_item(const Item* pi, Tree* ptree); // typedef struct { char character[TMAX]; char name[TMAX]; } Item; typedef struct node { Item item; struct node* left; struct node* right; } Node; typedef struct tree { Node* root; int size; } Tree; // 출력 함수 void print_item(Item item) { printf("%s (%s)\n", item.character, item.name); } void print_graph(Node* root, int space) { space += SPACING; if (root == NULL) { for (int i = SPACING; i < space; i++) printf(" "); printf("NULL"); return; } print_graph(root->right, space); printf("\n"); for (int i = SPACING; i < space; i++) printf(" "); print_item(root->item); print_graph(root->left, space); } void print_tree(Tree* ptree) { printf("\n--------Print Start--------\n"); print_graph(ptree->root, 0); // 그래프 출력 printf("\n---------Print End---------\n"); } // 출력 함수 int main() { Item items[] = { {"Iron Man","Tony Stark"}, {"Thor","Thor Odinson"}, {"Ant Man","Hank Pym"}, {"Wasp","Janet van Dyne"}, {"Hulk","Bruce Banner"}, {"Captain America","Strve Rogers"}, {"Scarlet Witch","Wanda Maximoff"}, {"Black Widow","Natasha Romanoff"}, {"Dr. Strange","Stephen Strange"}, {"Daredevil","Matthew Murdock"}, {"Punisher", "Frank Castle"}, {"Batman","Bruce Wayne"} }; int n = sizeof(items) / sizeof(items[0]); Tree tree; initialize(&tree); for (int i = 0; i < n; ++i) if (!add_item(&items[i], &tree)) break; print_tree(&tree); return 0; } // 편집 함수 static Node* make_node(const Item* pi) { Node* MakeNode = (Node*)malloc(sizeof(Node)); MakeNode->item = *pi; MakeNode->left = MakeNode->right = NULL; return MakeNode; } void initialize(Tree* ptree) { ptree->root = NULL; ptree->size = 0; } bool empty_tree(const Tree* ptree) { if (ptree->size == 0) return true; return false; } bool full_tree(const Tree* ptree) { if (ptree->size == MAXITEM) return true; return false; } int item_count(const Tree* ptree) { return ptree->size; } int compare(const Item first, const Item second) { return strcmp(first.character, second.character); } 우선 이 질문에 별로 필요하지 않는 부분은 지우고 하나의 소스파일에 모았습니다. 여기서 제가 구현하려고한 함수는 move_to_index입니다. 우선 add_item함수 코드입니다. bool add_item(const Item* pi, Tree* ptree) { if (full_tree(ptree)) { puts("Can't add more item."); return false; } if (ptree->root == NULL) { ptree->root = make_node(pi); ptree->size++; return true; } Node* AddItem = ptree->root; // 코드 가독성 위해 Node* 변수 사용 while (1) { int comp = compare(AddItem->item, *pi); if (comp == 0) { puts("Can't add duplicated item."); return false; } if (comp > 0) { if (AddItem->left != NULL) AddItem = AddItem->left; else { AddItem->left = make_node(pi); ptree->size++; return true; } } else { if (AddItem->right != NULL) AddItem = AddItem->right; else { AddItem->right = make_node(pi); ptree->size++; return true; } } } } 해당 함수는 트리에 새로운 노드를 추가하는 함수로 별 이상없이 작동합니다. 하지만 저는 이 함수에서 노드를 추가할 위치까지 이동하는 while 반복문을 사용자가 목표로 하는 노드까지 이동하는 별개의 함수로 구현하여 이를 노드의 추가 뿐만 아니라 삭제, 검색등 여러 작업에 사용하려고 했습니다. // 구현 실패 int goto_index(const Item* pi, Tree* ptree) { Node* Index = ptree->root; while (1) { int comp = compare(Index->item, *pi); if (comp == 0) return 0; if (comp > 0) // comp == 1 { if (Index->left == NULL) { ptree->root = Index; return 1; } Index = Index->left; } else // comp == -1 { if (Index->right == NULL) { ptree->root = Index; return -1; } Index = Index->right; } } } bool add_item(const Item* pi, Tree* ptree) { if (full_tree(ptree)) { puts("Can't add more item."); return false; } if (ptree->root == NULL) { ptree->root = make_node(pi); ptree->size++; return true; } int AddItem = goto_index(pi, ptree); // goto_index로 ptree의 포인터 이동 실패. 첫 노드 포인터 유지 if (AddItem == 0) { puts("Can't add duplicated item."); return false; } if (AddItem > 0) ptree->root->left = make_node(pi); else ptree->root->right = make_node(pi); ptree->size++; return true; } 하지만 해당 코드는 물론이고 매개변수를 이차원 포인터나 Tree* 형 변수로 바꿔보는 등 여러 시도를 해봤지만 모두 작동하질 않았습니다. 이 문제의 원인이 무엇인가요? 뭔가 풀릴듯 하면서 풀리지 않아 참 답답합니다. 답변 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderITemDto 클래스 생성 위치
안녕하세요 좋은 영상 감사합니다. 다름이 아니라 OrderItemDto 는 OrderDto 안에서 사용하는 클래스이므로 OrderItemDto(내부 클래스) 의 다시 내부 클래스로 생성하는 것이 맞지 않나요? 영상에서는 OrderDto 와 동등한 레벨로 생성하셔서 궁금증이 들었습니다. 감사합니다^^