묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 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 오류
설치는 잘 됐다고 뜨는데실행시키면 이렇게 뜨네요어떻게 해야 하나요?
-
해결됨홍정모의 따라하며 배우는 C언어
5-11 형변환 질문
안녕하세요! 형변환 공부 중 예상치 못한 결과가 나와서 질문드립니다.11행의 float 자료형을 갖는 변수 f에 double 표현식의 값이 들어갔습니다.그래서 '분명 표현식의 값이 커지면 절삭되겠군?' 이라는 생각을 갖고, 변수 d와 비교하며 그 값을 크게 설정했습니다.그런데 그 크기를 늘리니 둘 다 똑같은 값이 절삭되어 나오는 것 같습니다.왜 이런 현상이 일어났는지 설명해주시면 감사하겠습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
좋은 강의 잘 듣고 있습니다.
저는 테슬라 키워드로 응용을 하고 있었는데요, 아래 기사에서 https://www.yna.co.kr/view/AKR20230706003700075?input=1195mtitle을 어떻게 가져와야 할지, 일반화 되는 방법을 아무리 봐도 잘 모르겠습니다 ㅠ 본문은 #contents로 가져왔습니다. 도와주세요..import requests import time from bs4 import BeautifulSoup response = requests.get("https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%ED%85%8C%EC%8A%AC%EB%9D%BC") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") # 뉴스 기사 div 10개 추출 for article in articles: links = article.select("a.info") if len(links) > 1: # 링크가 2개 이상이면 url = links[1].attrs['href'] # 두번째 링크의 herf를 추출 # requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')) 방지를 위해 header 추가 response = requests.get(url, headers={'User-agent': 'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, "html.parser") content = soup.select_one("#contents") print(content.text) time.sleep(0.3)
-
미해결
Next.js - Vercel net::ERR_ABORTED 405
API Route관련 질문입니다.. 로컬 환경에선 잘 작동하는api route가 vercel 배포 후에 계속 제목에 적어놓은 405 에러가 발생합니다. 파일은 정확하게 pages/api/myapi.ts 이런식으로 되어있구요. 핸들러에 접근도 못하는 상황 입니다 매우답답하네요,,POST 나 GET 등 메소드 관련 로직은 당연히 다 적용 시켜봤습니다 머리로는 도저히 이해가 안가는 상황이라 같은 경우 겪어보신분 계시면 답좀 부탁드리겠습니다.. vercel 커뮤니티에서도 저랑 비슷한경우인 분들 계시던데 답을 다 못받으셧더라구요 혹시나 해서 질문올립니다. 참고로 405가 일반적으로 생기는 경우는 다 막아놨습니다.혹시나 코드에서 문제가 있다고 생각하시는분들 계실 수도 있으시니 클라이언트, 서버 코드 올려놓겠습니다.serverexport const config = { runtime: 'edge', }; export default async function handler (req: Request): Promise<Response> { if(req.method === 'POST') { // some code } }client const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json', }, signal: controller.signal, body });
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
import 오류
path('signup/', views.SignUpView.as_view(), name='signup'),이 부분에서 from . import views가 되지 않아 오류가 생기는 것 같습니다 왜 오류인지 잘 모르겠습니다 ImportError: cannot import name 'views' from 'dealershop' (/Users/minjiwon/Desktop/py/dealershop/dealershop/__init__.py)inventory 에서는 from . import views를 해도 잘 되는데 저쪽 부분에서만 되질 않습니다