묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
배달의 민족 모티브로한 프로젝트 중 질문..
안녕하세요 강사님!사장 테이블과 사용자 테이블을 나누었을 경우 강의에서는 PrincipatDetails()나 PrincipalDetailsService()에서는 Member를 컴포지션 하고 있는데요1. 테이블을 나누었을 경우 MemberDetails,OwnerDetails등 각각 따로 만들어줘야하나요?2. 만약 따로 만들어줘야 하면 로그인 요청이 오면 JwtAuthenticationFilter.attemptAuthentication()가 실행되고 PrincipalDetailsService()가 실행될텐데. 여기서 사장이 로그인 했을 경우와 사용자가 로그인 했을 경우 아이디가 같을 경우 에는 어떻게 처리하면 좋을까요?..3. 아니면 한 테이블에서 관리하는게 좋을까요?제가 생각했을 때는 테이블을 사장과 사용자와 합칠 경우에는 가게 테이블과 연관관계 매핑을 하기가 힘들다고 생각했었습니다. 회원은 여러개의 가게를 가질수 있다? 미숙한 질문이지만 답변 부탁드릴게요 !!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ArgumentResolver가 Interceptor를 대체할 수 있을까요??
ArgumentResolver가 Interceptor를 대체할 수 있을까요??프로젝트가 커지면 커질 수록 제외할 패턴이나 인증이 필요한 라우터 패턴을 webconfig에 입력해줘서 관리를 계속 해줘야하는데 관련 DTO를 만들어서 해당 dto가 붙어있으면 인증이 필요한 메소드라는 것을 나타내면 인터셉터가 없이 ArgumentResolver로 대체가 가능하지 않을까하는 생각이 들어서요 그래서 이런 인증 수행을 인터셉터가 아니라 리졸버 안에서 해도 무방하지 않을까 생각하는데 ArgumentResolver와 Interceptor가 지향하는 것이 다르기 때문에 그렇게 하면 안되는 것이가 궁금해서 질문드립니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
EC2 pem 키를 사용해서 원격에 있는 서버로 접근할 때 WARNING: UNPROTECTED PRIVATE KEY FILE! 문제가 발생합니다!
안녕하세요! 제로초님! 노드버드 섹션6 EC2 생성하기 강의까지 수강한 수강생 입니다!아래 수강생 분과 동일한 문제가 발생하여 구글링과 다른 분들의 질문 글을 보며해결하려 했으나 그러지 못하여 질문을 올리게 되었습니다!항상 친절한 답변을 해주셔서 감사합니다!(강의 항상 잘 보고 있어요!) 같은 문제가 발생한 수강생 분의 질문https://www.inflearn.com/course/lecture?courseSlug=%EB%85%B8%EB%93%9C%EB%B2%84%EB%93%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EB%A6%AC%EB%89%B4%EC%96%BC&unitId=49012&tab=community&category=questionDetail&q=152537키의 권한을 바꾸는 방법 참고https://wookim789.tistory.com/34SSH은 22번 포드, HTTP는 80번 포트, HTTPS는 443번 포트로 강의와 동일하게 진행하였습니다.폴더를 하나 더 들어가야 하는 불편함 때문에 강의와 똑같이 prepare 폴더는 만들지 않고,노드버드 폴더 아래에 바로 front, back 폴더가 위치하도록 하였습니다.vs 터미널에서 발생한 문제 메시지를 번역하니 다음과 같았습니다.경고: 보호되지 않는 개인 키 파일react-nodebird.pem'에 대한 권한이 너무 열려 있습니다.다른 사람이 개인 키 파일에 액세스할 수 없어야 합니다. 이 개인 키는 무시됩니다.로드 키 "react-nodebird.pem": 잘못된 권한ubuntu@ec2-13-125-253-222.ap-northeast-2.compute.amazonaws.com : 권한이 거부되었습니다 같은 문제가 발생한 수강생 분의 글을 읽고 vs 터미널이 아닌 git bash를 사용했습니다.이 때 문제를 해결하신 수강생 분과는 다른 메시지가 나타났습니다.(문제를 해결하신 수강생 분의 git bash 상태)(저의 git bash 상태)응용프로그램에 대한 확장 보안 유지관리가 활성화되지 않았습니다.Expanded Security Maintenance for Applications is not enabled.빨간 선은 개인 정보라 부득이하게 블러 처리하였습니다. ssh -i "react-nodebird.pem" ubuntu@ec2-13-125-253-222.ap-northeast-2.compute.amazonaws.com의심이 들어 다시 vs code 터미널의 노드버드 폴더 경로에 위 명령어를 붙여 넣었으나WARNING: UNPROTECTED PRIVATE KEY FILE! 문제가 계속 발생합니다.어떻게 해야 이 문제를 해결할 수 있는지 도움을 구하고 싶습니다!저 또한 답변만 기다리지 않고 계속 해결 방안을 모색하겠습니다!긴 질문 글 읽어주셔서 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
9분 20초경 질문
*(parr[j] + i)과 *(*(parr + j) + i))는 어느정도 이해를 했습니다.예를 들면*(parr[0] + 1)parr[0]에 담긴 데이터는 주소이고 그 주소는 arr0이라는 포인터와 비슷한 무언가를 가리킨다.그리고 arr0이라는 포인터와 비슷한 무언가는 arr0[0]의 주소를 가리킨다.그리고 arr0[0]은 arr0의 첫 번째 공간을 의미한다.그러므로 parr[0]은 arr0[0]을 가리키는 것이고 parr[0]에 1을 더하면 arr0[0]의 다음 공간인 arr0[1]을 가리키게 되고*로 그 공간에 접근하게 된다.*(*(parr + 1) + 1)parr은 arr0을 가리킨다. 그리고 arr0은 arr0[0]을 가리킨다.그러므로 parr에 1을 더하면 arr0[1]을 가리키게 된다.거기에 *를 붙이면 arr0[1]의 공간에 있는 데이터에 접근을 한다.거기서 1을 더하면 그 데이터에 1을 더하게 되는 것이다.이렇게 이해를 했는데 맞는거겠죠?이거 말고 질문이 있는데parr[j][i]와 (*(parr + 1))[1]의 맨앞에 *가 없는데도 어떻게 그 공간에 접근해서printf 함수로 출력을 했을 때 배열의 주소가 아닌 배열의 데이터가 출력 될 수 있는 건지 궁금합니다.parr[j]는 배열의 주소가 나오는데 parr[j][i]는 왜 배열의 값이 나오는지 이해가 안되요.감사합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 웹
섹션2 부터 7까지는 웹에 대한 강의인가요? 앱개발 커리큘럼 듣고 싶으면 강사님 강의 중 '스프링 핵심 원리 - 기본편'이거부터 들으면 될까요?
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
윈도우 빌드 파일에 업데이트가 반영되지 않습니다
안녕하세요 선생님, 강의 잘들었습니다!윈도우 빌드로 진행했고, 업데이트가 잘 되는지 확인하려고 아래 과정을 거쳤습니다.AddressableAsset을 추가해 Update a Previous Build로 에셋 빌드하고, play mode > use existing build로 이상 없이 파일 업데이트 하고 잘 진행됨.하지만 빌드 파일에서는 이 업데이트 내용이 전혀 반영되지 않아 질문 드립니다.hash값도 제대로 바뀐걸 확인했고, 서버에도 파일도 잘 업로드가 되었는데, 빌드 파일에서는 다운받을 데이터를 전혀 찾지 못합니다. 이름을 덮어쓴 파일은 반영이 잘되는데, 새로 에셋을 추가한 부분에 대해서는 전혀 읽어오질 못합니다.use existing build로 플레이한 경우랑 어떤점이 달라서 작동하지 않는지 궁금합니다! (+그리고 Build > Update a Previous Build 선택했을때 팝업창이 뜨는게 아니라 바로 아래의 사진으로 넘어가는데, 이부분은 상관없을까요?)
-
해결됨코딩테스트 [ ALL IN ONE ]
강의 자료에 대해서 질문 있습니다.
안녕하세요! 노션 공유를 받았는데 ([EBook] 개발자 취업 비밀노트) << 이 교재에 대해서 공유를 받았습니다. 혹시 이게 강의 교재인지 아니면 잘못 공유 받은 것 인지 궁금하여 여쭤봅니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
스택으로 DFS 구현하는 방법
안녕하세요. 지금 그래프 이론 파트를 보고 있는데요! 혹시 DFS를 스택으로 구현하는 거랑 델타 탐색에 대한 부분도 강의에 있는지 궁금합니다이론 파트 먼저 보고 문제 푼 후에 풀이 영상 보려고 남겨뒀는데 혹시 문제 풀이 쪽에서 설명을 해주시면 미리 보고 정리해두고 싶어서요
-
해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
502 Bad Gateway
2024/01/15 15:08:24 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.64.1, server: , request: "GET / HTTP/1.1", upstream: "http://172.18.0.2:8000/", host: "192.168.64.7" 위와 같은 오류가 발생하는데 문제가 무엇인지 모르겠습니다.
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
select provider 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 강의에 나오는 코드와 동일하다고 생각하는데 SelectProviderScreen을 띄웠을 때 버튼을 눌러서 toggle 메소드들이 실행되게 해도 값이 변경이 안됩니다! ㅠㅠselect_provider_screen.dartclass SelectProviderScreen extends ConsumerWidget { const SelectProviderScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final state = ref.watch(selectProvider); return DefaultLayout( title: 'SelectProviderScreen', body: SizedBox( width: double.infinity, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(state.name), Text(state.isSpicy.toString()), Text(state.hasBought.toString()), ElevatedButton( onPressed: () { ref.read(selectProvider.notifier).toggleIsSpicy(); }, child: Text('Spicy Toggle'), ), ElevatedButton( onPressed: () { ref.read(selectProvider.notifier).toggleHasBought(); }, child: Text('hasBought Toggle'), ), ], ), ), ); } }select_provider.dartimport 'package:advanced_state/model/shopping_item_model.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; final selectProvider = StateNotifierProvider<SelectNotifier, ShoppingItemModel>( (ref) => SelectNotifier(), ); class SelectNotifier extends StateNotifier<ShoppingItemModel> { SelectNotifier() : super( ShoppingItemModel( name: '김치', quantity: 3, hasBought: false, isSpicy: true, ), ); toggleHasBought() { state.copyWith( hasBought: !state.hasBought, ); } toggleIsSpicy() { state.copyWith( isSpicy: !state.isSpicy, ); } }shopping_item_model.dartclass ShoppingItemModel { // 이름 final String name; // 갯수 final int quantity; // 구매했는지 final bool hasBought; // 매운지 final bool isSpicy; ShoppingItemModel({ required this.name, required this.quantity, required this.hasBought, required this.isSpicy, }); ShoppingItemModel copyWith({ //선택한 값만 선택적으로 변경할 수 있게 메소드를 만든다. String? name, int? quantity, bool? hasBought, bool? isSpicy, }) { return ShoppingItemModel( name: name ?? this.name, //name이 null일때는 this.name, null이 아닐때는 입력받은 name이 된다. quantity: quantity ?? this.quantity, hasBought: hasBought ?? this.hasBought, isSpicy: isSpicy ?? this.isSpicy, ); } }어느 부분이 잘못되었을까요...?
-
해결됨코딩테스트 [ ALL IN ONE ]
트리 구현 방식에 대한 질문
안녕하세요.트리를 클래스로 구현하는 것과 배열로 구현하는 것에 차이가 있나요? 이제 막 코딩테스트를 처음 공부하고 있는데 구현 방법에 따라서 활용도가 어떻게 다른지 궁금합니다.제가 짧게 혼자 공부햇을 때에는 배열로 트리를 만들고 인덱스를 기준으로 부모와 자식을 찾아가는 방식으로 공부했는데요.강사님 강의를 들어보니 클래스로 구현하는게 훨씬 직관적으로 보여서요.이런 구현 방식들이 각각 어떻게 장단점이 있는지 궁금합니다.제가 정리하기로는 배열은 완전 이진 트리만 구현이 가능하고 부모와 자식을 찾아가기에 용이하다... 클래스 형식으로 트리를 구현하면 루트부터 시작할 때 용이하다...라고 정리를 햇는데 잘 이해하고 있는 건가요?배열로 트리를 구현하게 되면 bfs랑 dfs 탐색을 할 때에도 인덱스를 타고 타고 넘어가도록 코드를 작성하면 되나요?그리고 용어들이 조금 헷갈리는데 연결리스트로 트리를 구현하는 방식이 클래스로 구현하는 것과 같은 의미인가요..?
-
해결됨홍정모의 따라하며 배우는 C언어
int* 변수명과 int *변수명의 차이
int* 변수명과 int *변수명이 해석하는데 차이가 있다고 했는데이게 해석상으로 어떤 차이가 있는 건지 궁금합니다.전 강의에서 어떻게 얘기를 해주신 거 같은데 그 때도 이해를 제대로 못했어요
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
아직 초반부분인데 질문이있습니다.
제가 타임리프말고 Vue를 사용하려고합니다 그리고 시큐리티를 사용하려고하는데 해당 강좌에 시큐리티가 없는건지요?궁금한게 시큐리티를 적용안하고 보통 프로젝트를 만드나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMapping에 대해서 궁금한점이 있습니다.
@RequetMapping의 경우 기존 Handler가 Class단위로 매핑되던것에서 -> Method단위로 매핑된다고 하셨는데 그러면 해당 부분을 동작할때 내부에서 리플렉션을 활용해서 invoke형식으로 작동되는 방식인건가요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션2. 서블릿 / Hello 서블릿 에서
로그 기록에서 Receive[] 를 찾는 부분입니다.강사님의 로그 기록이 나오지 않습니다.Ultimate 버전을 구매하면 나온다는 내용이 구글 검색에서 보이는데요,아무래도... 해당 로그를 보려면 Ultimate 버전을 구매해야겠죠?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
persistence
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/1o6p8SoEIhKZASTIlAnHRlSmc5F4gkK6s/view?usp=drive_link persistence부분과 h2버전 설정하는 부분에서 에러가 발생했는데 방법을 모르겠습니다.이것떄문인지 h2에 들어가서 연결시켜도Unsupported database file version or invalid file header in file "C:/Users/PC/jpashop.mv.db" [90048-224] 90048/90048 (도움말)라는 에러가 뜹니다.
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
빌드 후 /dist 디렉토리가 강사님과 다른데 괜찮을까요
npm run build 후npm run start:prod 했더니 main.js를 찾을 수 없다는 에러 메세지가 나와 디렉토리를 확인해보니 아래와 같았습니다.그리고 main.js는 /dist/src 아래에 있었고요. 일단 packakge.json에서 start:prod의 실행 경로를 'dist/src/main.js'로 변경했고,npm run start:prod해서 서비스 가동되는것 확인했습니다. vsc 종료해도 로컬 호스트로 백엔드 서버 접근과 api 사용까지 이상 없이 되는 것 확인했으니 이대로 aws에 올리고 루트 디렉토리에 /dist 폴더, .env, .gitignore, package-lock.json, package.json만 업로드 해주면 되는걸까요?
-
해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
mariadb 접근권한 오류
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 193, in initsuper().__init__(*args, **kwargs2)django.db.utils.OperationalError: (1044, "Access denied for user 'django'@'%' to database 'django'") mariadb 컨테이너를 실행 후,django 컨테이너를 실행 시 위와 같은 오류가 발생합니다.찾아보니 django 에 대한 권한이 없어서 그렇다고 하는데,해결방법이 있을까요?
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
강의 통합본 요청드립니다
안녕하세요수업자료 통합본 요청 드리고자 합니다. starktype@gmail.com
-
미해결실습으로 배우는 AWS(Amazon Web Services) 클라우드 컴퓨팅 입문
헤더부분
http://ec2-43-202-57-27.ap-northeast-2.compute.amazonaws.com/요청 메서드:GET상태 코드:403 Forbidden원격 주소:43.202.57.27:80리퍼러 정책:strict-origin-when-cross-originccept-Ranges:bytesConnection:Keep-AliveContent-Length:45Content-Type:text/html; charset=UTF-8Date:Mon, 15 Jan 2024 13:38:24 GMTEtag:"2d-432a5e4a73a80"Keep-Alive:timeout=5, max=100Last-Modified:Mon, 11 Jun 2007 18:53:14 GMTServer:Apache/2.4.58 (Amazon Linux)text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding:gzip, deflateAccept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7Cache-Control:max-age=0Connection:keep-aliveHost:ec2-43-202-57-27.ap-northeast-2.compute.amazonaws.comUpgrade-Insecure-Requests:1User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Whale/3.24.223.18 Safari/537.36