묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
섹션 5 부록. IT 용어 시리즈 가)편에서
섹션 5부록. IT 용어 시리즈 가)편에서맨먼스와 턴기 아닌 계약 방식의 차이가 헷갈려요.둘다 개발하는데 몇명을 어느정도 기간 동안 투입시킨다는 개념 아닌가요?
-
미해결초보를 위한 도커 안내서
도커 기본명령어로 설치된 이미지? 라이브러리? 파일들 삭제하는명령어
리눅스 노베이스 수강생입니다.Ubuntu에서 redis와 mysql을 띄워보는 명령어를 사용할때, redis와 mysql이 설치되면서(?) 로컬(하드드라이브) 용량을 엄청 많이 잡아먹고있는거 같아요(pull된것들?)처음 도커,우분투를 깔았을때 하드가 95기가 이상 남아있었던것으로 기억하는데, 이것,저것 깔리고 난 후 85기가남았습니다.거의 한 10기가 이상이 설치된거같은데...명령어 실행 이후 설치된 이미지?라이브러리? 들을 모두 다 지우고 DOCKER를 처음 깔았을 때 당시의 초기세팅으로 수정하고싶습니다.. 어떤명령어들로 처리해야하나요?도커 데스크탑에서 모든 리소스를 다 제거해도... 하드드라이브 용량을 계속 잡아먹고있어요 도와주세요... (노트북이라 용량이별로없음 85/250) 명령어든, 직접 경로가서 삭제하는거든 뭐든 알려주십쇼... + 윈도우 11에 설치해서 강의를 따라했습니다.ubuntu를 실행할때 뜨는 프롬프트창에 명령어를 입력했습니다.root@사용자명:~# 이 상태로 명령어를 쳤는데~가 어디경론지 모르겠네요
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
GoRouter에서 redirect 하는 방법 강의에서 Redirect가 안됩니다.
처음 status가 init 이후 unknown으로 바뀌면서 로그인 페이지로 전환되어야 되는데 전환되지 않습니다. ㅜㅜ
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
DataManager 관련 질문
안녕하세요.LoadXml 메서드를 보면 각종 Loader 클래스들이 활용되고 있는 것 같고,ILoader 인터페이스를 상속받고 있는 것으로 보입니다. 근데 에셋 폴더 어디서도 이 Loader 클래스들을 찾을 수가 없어 문의드립니다.어디 가야 찾을 수 있나요? 어떻게 작동하는 건지도 간략히 힌트 주시면 감사하겠습니다.
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
multiprocess 환경에서 특정 Process에 문제가 있거나 죽었을때 처리 방법
여러개의 process를 ProcessPoolExecutor 로 돌리거나 multiprocessing.Process 로 만들었을때, 특정 Process에서 문제가 발생하여 죽거나 zombie 가 되었을 때 보통 어떻게 처리하시나요?> 예를 들면 여러 process를 이용해서 컴퓨터를 monitoring 하는 프로그램을 짠다고 했을 때, 특정 monitoring process중 하나가 문제가 생겼을 때 해당 process를 살리거나 다시 실행하거나?여러 process들을 사용하고 있을 때 해당 process들이 잘 돌고 있는지, Queue와 Process를 모니터링할때는 어떤 방법을 사용하시나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Invalid bound statement 에러
안녕하세요.MyBatis 적용 예제를 테스트하던 중 아래와 같은 에러가 발생해 질문드립니다. test와 application 모두 에러가 발생합니다. 다음과 같은 방법들을 시도해봤습니다.오타 수정 : 오타 문제인가 싶어 강사님의 자료를 그대로 복사해서 사용했습니다.패키지 구조 확인 : Mapper 파일이 있는 경로와 xml 파일의 경로도 일치하니다.버전 수정 : mybatis의 버전이 안맞나 싶어 2.3.1로 수정도 해봤습니다. 현재 스프링부트 버전은 2.6.5, mybatis 버전은 2.2.0입니다.gradle 재빌드캐시 삭제 제가 놓친 부분이 있는지 확인 부탁드립니다. 감사합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
강의 들으면서 같이 볼만한 책이나 교재 같은게 있을까요?
항상 좋은 강의 감사합니다.다름이 아니라 혹시 강의 들으면서 같이 볼만한 책이나 교재 같은게 있을까요?
-
해결됨스프링 핵심 원리 - 고급편
try / catch 문 질문
1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]김영한님은 intellij에서 try / catch 문을 생성하면 catch 문 안에 자동으로 e.printStackTrace(); 가 나오는데, 저는 throw new Exception(e); 이 나옵니다.Configure Live Templates를 확인해보았지만, try catch문에 대한 설정을 찾지 못했습니다. 어떻게 하면 김영한 님처럼 catch문 안에 자동 생성되는 내용을 throw가 아닌, printStackTrace로 변경할 수 있는지 궁금합니다.
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
스프2탄이후 후속강의는 언제나와요?
스프2탄 그이후 후속 과정인게 마프라고 들었습니다.혹시 이강좌 언제 개강하나요? 그리고 어떤 내용의 강의인지 궁금해지네요 강사님의 강의는 항상 기대이상이였거든요강사님의 수업은 항상 잘듣고있습니다. 스프2탄이후 후속강의에대한 안내가 가능하시면 부탁드릴게요
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Challenge 문제 질문
안녕하세요. 강의 잘 듣고 있습니다. Challenge 문제에서 선생님이 써주신 코드 중 질문있어 글 남깁니다. 첫째줄에 ,SELECT hackers.hacker_id, hackers.name, count(*) Challenges_created라고 써져있는데 여기서 count(*)이 아니고 count(challenge_id) as challenges_created라고 써도 되지 않나요? 혹시 차이가 있다면 무슨 차이인지 알고 싶습니다.
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
querrybox oracle 오류
뭐가 문제인가요?
-
미해결홍정모의 따라하며 배우는 C++
10:30 코드 관련 질문입니다.
수업에서는 class A를 forward declaration하고 class B - class A - doSomething 함수 순으로 코드를 짜셨는데요. 아래 코드와 같이 class B를 전방선언하고, class A- class B - doSomething 함수 순으로 선언하면 에러가 나는데 왜그런가요? #include <iostream>using namespace std;class B;class A {private: int m_value = 1; friend void B::doSomething(A& a);};class B {private: int m_value = 2;public: void doSomething(A& a);};void B::doSomething(A& a) { cout << a.m_value << endl;}int main() { A a; B b; b.doSomething(a); return 0;} class A를 선언할 때 class B가 있다는 것을 알면 되니까 class B를 전방선언했고, class B 안에 doSomething함수라는게 있는지는 모르는 상태니까 doSomething함수 정의를 class B 밖으로 빼놓은 상태잖아요?그리고 class B 정의에선 class A라는게 있다는걸 알면 되는데 그건 위에 먼저 정의되어있구요.그 다음 마지막으로 doSomthing 함수가 정의되는데 doSomthing 함수가 a.m_value에 접근을 못하네요. class A의 멤버인 m_value를 public으로 바꿔주면 되긴 할텐데 이 수업의 주제와 안맞는 것 같고..class A는 위에 이미 정의되어있는데 왜 접근을 못하는지요? 잘 되는 수업상의 코드 대비 class 정의 순서+전방선언 만 바꿨는데??
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
mssql_connet.php 오류
비밀번호 부분 올바르게 설정했는데, 어떻게 해야 하나요?
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
설정 오류
코드상 어느 부분이 문제인가요? 계정 아이디와 패스워드는 맞습니다..
-
해결됨디자인 시스템 with 피그마
토큰 플러그인 사용 시 일부 컨포넌트 회기현상? ㅠㅠ
강의 잘 들어가면서 프로젝트 하나를 작업 중인데작업중에 폰트라던가 컬러 필요에 따라 추가해 가면서 사용중입니다.근데 항목을 추가할때 마다 일부 컨포넌트가 자꾸 바뀝니다 ㅠㅠ어느시점으로 바뀌는지는 모르겠는데 수정을 해도 플러그인에 뭔가를 추가하기만 하면자꾸 돌아가요 ㅠㅠ 이건 왜 그런걸까여?작업중에 플러그인을 항상 켜두지 않고 필요시에만 켜서 사용하고 있는데이것이 원인이 될 수도 있나요?같은 수정작업을 계속하게 되다보니 너무 답답해서 조언을 구해봅니다 ㅠㅠ
-
해결됨홍정모의 따라하며 배우는 C언어
표현식의 자료형
안녕하세요. 5-11 형변환을 공부하다가 궁금한 점이 생겨 질문드립니다.13행에서 변수 i에, 강제로 float로 변환된 표현식 'f + 2 * c;'의 값이 저장되는 것으로 이해했습니다.cpu는 다른 자료형들을 연산할 수 없기 때문에 컴파일러가 표현식의 자료형을 동일하게 변환시키는 것은 이해됩니다.그런데 변할 때 피연산자들 중 상대적으로 더 큰 자료형을 갖는 피연산자에 맞춰 변환되는 것인가요?즉 13행의 경우는 실수 자료형을 갖는 변수 f가 정수인 '2 * c' 보다 더 큰 자료형이기 때문에 두 피연산자를 더한 값의 자료형이 float가 되는 것인가요?늘 좋은 답변 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
where절 단일 연산자
select *from nw.orders awhere a.order_date = (select min(order_date) from nw.orders x where x.customer_id = a.customer_id);이 쿼리가 실행되는 이유는 서브쿼리로 전달되는 메인쿼리의 레코드에 대한 결과가 한 건만 나와서 가능한게 맞나요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
19강 Process finished with exit code 0
모든 수업 내용을 따라가고 manage.py 우클릭해서 Debug 'manage' 를 누르니 이렇게 Process finished with exit code 0 라고 나오면서 서버가 실행이 되지 않네요
-
미해결스프링 시큐리티 OAuth2
OAuth2 + JWT : 소셜 로그인 시 JWT 발급
제가 일반적은 시큐리티와 JWT 로그인하는 방법과 소셜 로그인 2개를 구현해서 어느 방법으로 하던 accessToken을 발급해주고 accessToken을 통해서 게시판이라던지 해당 유저 인지 판별할 때 accessToken으로 판별하려고 합니다.질문 1:해당 수업이 OAuth2가 메인이고 OAuth2와 JWT 토큰과는 별개인 것은 알고 있지만 찾아봐도 못찾겠어서 질문을 남깁니다. accessToken을 발급받으면 클라이언트가 header에 accessToken을 같이 요청을 보내 줄 때 보내주고(저 같은 경우 TokenDTO와 TokenEntitty를 만들어줘서 DB에 넣어줌 )DB에 담긴 정보:grantTypeaccessTokenrefreshTokenuserEmailnickName서버(백엔드)에서는 그 accessToken을 받아서 유효성 검사를 통과하면 컨트롤러나 서비스에서 뭔가 해주지 않아도 클라이언트 요청을 실행해줌// 클라이언트 요청 시 JWT 인증을 하기 위해 설치하는 커스텀 필터로 // UsernamePasswordAuthenticationFiler 이전에 실행된다. // 이전에 실행된다는 뜻은 JwtAuthenticationFilter를 통과하면 // UsernamePasswordAuthenticationFilter 이후의 필터는 통과한 것으로 본다는 뜻이다. // 쉽게 말해서, Username + Password를 통한 인증을 Jwt를 통해 수행한다는 것이다. // JWT 방식은 세션과 다르게 Filter 하나를 추가해야 합니다. // 이제 사용자가 로그인을 했을 때, Request에 가지고 있는 Token을 해석해주는 로직이 필요합니다. // 이 역할을 해주는것이 JwtAuthenticationFilter입니다. // 세부 비즈니스 로직들은 TokenProvider에 적어둡니다. 일종의 service 클래스라고 생각하면 편합니다. // 1. 사용자의 Request Header에 토큰을 가져옵니다. // 2. 해당 토큰의 유효성 검사를 실시하고 유효하면 // 3. Authentication 인증 객체를 만들고 // 4. ContextHolder에 저장해줍니다. // 5. 해당 Filter 과정이 끝나면 이제 시큐리티에 다음 Filter로 이동하게 됩니다. @RequiredArgsConstructor @Slf4j public class JwtAuthenticationFilter extends GenericFilterBean { public static final String HEADER_AUTHORIZATION = "Authorization"; private final JwtProvider jwtProvider; // doFilter는 토큰의 인증정보를 SecurityContext에 저장하는 역할 수행 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; // Request Header에서 JWT 토큰을 추출 String jwt = resolveToken(httpServletRequest); String requestURI = httpServletRequest.getRequestURI(); if(StringUtils.hasText(jwt) && jwtProvider.validateToken(jwt)){ // 토큰이 유효할 경우 토큰에서 Authentication 객체를 가지고 와서 SecurityContext에 저장 Authentication authentication = jwtProvider.getAuthentication(jwt); SecurityContextHolder.getContext().setAuthentication(authentication); log.info("Security Context에 '{}' 인증 정보를 저장했습니다., uri : {}", authentication.getName(), requestURI); } else { log.debug("유효한 JWT 토큰이 없습니다. uri : {}", requestURI); } chain.doFilter(request, response); } // Request Header 에서 토큰 정보를 꺼내오기 위한 메소드 private String resolveToken(HttpServletRequest httpServletRequest) { String bearerToken = httpServletRequest.getHeader(HEADER_AUTHORIZATION); if(StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) { return bearerToken.substring(7); } else { return null; } } }여기서 필요하거나 자세히 진행하고 싶다면 DB에서 체크해서DB에서 accessToken과 비교해서 맞으면UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userEmail, userPw);로 아이디와 비밀번호를 기반으로 생성했으니 해당 유저가 맞으므로 요청을 성공적으로 받아준다. 이게 맞는 흐름인가요? 질문 2:먼저, 로그인 시 accessToken과 refreshToken을 발급해주는 것은 구현을 했는데 소셜 로그인에서 JWT를 발급해주는 것이 헷갈리더군요. // 로그인 @PostMapping("/login") public ResponseEntity<TokenDTO> login(@RequestBody MemberDTO memberDTO) throws Exception { try { return memberService.login(memberDTO.getUserEmail(), memberDTO.getUserPw()); } catch (Exception e) { return ResponseEntity.badRequest().build(); } }// 로그인 public ResponseEntity<TokenDTO> login(String userEmail, String userPw) throws Exception { // Login ID/PW를 기반으로 UsernamePasswordAuthenticationToken 생성 UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userEmail, userPw); // 실제 검증(사용자 비밀번호 체크)이 이루어지는 부분 // authenticateToken을 이용해서 Authentication 객체를 생성하고 // authentication 메서드가 실행될 때 // CustomUserDetailsService에서 만든 loadUserbyUsername 메서드가 실행 Authentication authentication = authenticationManagerBuilder .getObject() .authenticate(authenticationToken); // 해당 객체를 SecurityContextHolder에 저장 SecurityContextHolder.getContext().setAuthentication(authentication); // authentication 객체를 createToken 메소드를 통해서 생성 // 인증 정보를 기반으로 생성 TokenDTO tokenDTO = jwtProvider.createToken(authentication); HttpHeaders headers = new HttpHeaders(); // response header에 jwt token을 넣어줌 headers.add(JwtAuthenticationFilter.HEADER_AUTHORIZATION, "Bearer " + tokenDTO); MemberEntity member = memberRepository.findByUserEmail(userEmail); log.info("member : " + member); TokenEntity tokenEntity = TokenEntity.builder() .grantType(tokenDTO.getGrantType()) .accessToken(tokenDTO.getAccessToken()) .refreshToken(tokenDTO.getRefreshToken()) .userEmail(tokenDTO.getUserEmail()) .nickName(member.getNickName()) .build(); log.info("token : " + tokenEntity); tokenRepository.save(tokenEntity); TokenDTO token = TokenDTO.toTokenDTO(tokenEntity); return new ResponseEntity<>(token, headers, HttpStatus.OK); }(JWT 설정을 생략...) 소셜 로그인 같은 경우는 프론트에서 특정 URL로 보내주잖아요<a href="/oauth2/authorization/google">구글 로그인</a>위의 방법은 그냥 아이디, 비밀번호를 치면 되는 방법이고 소셜 로그인도 1차 인증을 받고 JWT를 발급해주면 된다고 알고있는데 위에서 구현한 방법으로 사용하기에는 URL이 다르잖아요? 프론트 URL은 고정으로 저 방법을 사용해야 한다고 알고 있는데... 그러면 소셜 로그인을 여러개 사용하면 예를들어, 구글, 카카오톡, 네이버 이런식으로 사용하면 컨트롤러에 각각의 URL로 위의 방식처럼 만들어야 JWT 발급해주는 기능을 구현할 수 있는건가요?
-
해결됨모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
ampsetup monitor 오류
설치는 잘 됐다고 뜨는데실행시키면 이렇게 뜨네요어떻게 해야 하나요?