묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
며칠동안 해결을 못해 남깁니다 ㅜㅜ
안녕하세요.. 제로초님 ㅜㅜ 며칠동안 해결을 하지 못하여 진도를 나갈수가 없어 ㅜㅜㅜ 큐앤에이 남깁니다 ...(또륵) login버튼을 누르면 redux에서는 'LOG_IN_REQUEST'실행이 되지만..saga에서는 'LOG_IN_REQUEST'로 안넘어갑니다 ㅜ LOG_IN_SUCCESS로도 당연히 안 넘어가구요 ㅜㅜ redux history 에도 LOG_IN_REQUEST만 남고 LOG_IN_SUCCESS나 LOG_IN_FAILURE로는 아예 안넘어갑니다 ㅜㅜ *참고로 console.log로 찍으면 function* watchLogIn()까지는 찍힙니다 ㅜㅜ 대체 왜그럴까요 //sagas/user.js 코드 import { all, delay, fork, put, takeLatest } from 'redux-saga/effects'; import axios from 'axios'; import { LOG_IN_FAILURE, LOG_IN_REQUEST, LOG_IN_SUCCESS, LOG_OUT_FAILURE, LOG_OUT_REQUEST, LOG_OUT_SUCCESS, } from '../reducers/user'; function logInAPI(data) { return axios.post('/api/login', data); } function* logIn(action) { console.log("Loginsaga"); try { //console.log('saga logIn'); // const result = yield call(logInAPI); yield delay(1000); yield put({ type: LOG_IN_SUCCESS, data:action.data, }); } catch (err) { console.error(err); yield put({ type: LOG_IN_FAILURE, data: err.response.data, }); } } function logOutAPI() { return axios.post('/api/logout'); } function* logOut() { try { // const result = yield call(logOutAPI); yield delay(1000); yield put({ type: LOG_OUT_SUCCESS, }); } catch (err) { console.error(err); yield put({ type: LOG_OUT_FAILURE, error: err.response.data, }); } } function* watchLogIn() { console.log("watchLogin"); yield takeLatest(LOG_IN_REQUEST, logIn); } function* watchLogOut() { yield takeLatest(LOG_OUT_REQUEST, logOut); } export default function* userSaga() { yield all([ fork(watchLogIn), fork(watchLogOut), ]); } //reducers/user.js 코드 //reducer 쪼개기! export const LOG_IN_REQUEST = 'LOG_IN_REQUEST'; export const LOG_IN_SUCCESS = 'LOG_IN_SUCCESS'; export const LOG_IN_FAILURE = 'LOG_IN_FAILURE'; export const LOG_OUT_REQUEST = 'LOG_OUT_REQUEST'; export const LOG_OUT_SUCCESS = 'LOG_OUT_SUCCESS'; export const LOG_OUT_FAILURE = 'LOG_OUT_FAILURE'; const dummyUser = { id: 1, nickname: 'songsong', Posts: [], Followings: [], Followers: [], }; export const initialState={ isLoggingIN:false ,//시도에 대한 변수 isLoggedIn: false, isLoggingOUT:false, me: null, signUpdate: {}, loginDate: {} } //actionCreater export const loginRequestAction = (data) => ({ type: LOG_IN_REQUEST, data, }); export const logoutRequestAction = () => ({ type: LOG_OUT_REQUEST, }); const Userreducer=(state=initialState,action)=>{ switch(action.type){ case LOG_IN_REQUEST: console.log('reducer logInReQuest'); return { ...state, isLoggingIN:true, } case LOG_IN_SUCCESS: console.log('reducer logInSuccess'); return { ...state, isLoggingIN:false, isLoggedIn: true, me:{...action.data,nickname:'songsong'} } case 'LOG_IN_FAILURE': return { ...state, isLoggingIN:false, } case LOG_OUT_REQUEST: return { ...state, isLoggingOUT:true, } case LOG_OUT_SUCCESS: return { ...state, isLoggingOUT:false, isLoggedIn: false, me:null } case LOG_OUT_FAILURE: return { ...state, isLoggingOUT:false, } default : return state; } } export default Userreducer;
-
미해결스프링 시큐리티
로그인후 컨트롤러에서 세션을 이용하는 것에 대해 문의 드립니다.
혼자 시큐리티를 이용한 포트폴리오를 만들면서 세션문제를 만나 다른분께서 올리신 세션에 대한 질문을 보고 질문드리게 되었습니다 https://www.inflearn.com/questions/37286 여기에서 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Object principal = authentication.getPrincipal(); String username = null; if(principal != null && principal instanceof User){ username = ((User) principal).getUsername(); } 라고 답변해 주셨는데 섹션3-Form인증 구현에서 User를 상속 받은 AccountContext를 만든것을 따라 적용했습니다. 그리고 AuthenticationProvider 클래스 안에서 강의처럼 모두 작성하였고 마지막으로 UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken( accountContext.getAccount(), null, accountContext.getAuthorities()); 를 만들어 리턴시켜 주었습니다. 그리고 저기 답변주신 코드처럼 if문 안에서 principal의 null 체크와 User를 상속받은 principal인지 확인하는 것인데 로그인 후 Object principal은 Account 객체이고 User를 상속받은 것은 AccountContext라 if문안에 들어가지 않습니다. 이때 UsernamePasswordAuthenticationToken을 수정해야 되는지 모르겠어서 문의 드리게 되 었습니다. 그리고 로그인 하지 않은 유저는 Object principal에 ANONYMOUS가 들어가있고 로그인한 유저는 Account 객체가 들어가서 두 상황 모두 if 문 안에 principal !=null 통과하는 것을 확인 했습니다. 어떠한 상황을 위해 null 여부를 판별하는지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
9.4 강 오버로딩에서 friend operator<와 멤버함수operator<
강의에서 써주신 부분에서 friend를 쓰셨는데 bool operator<(const Cents& c2)를 통해 멤버함수로 바꿔주고 두개를 다 사용할때 어떤게 실행될까 했는데 bool operator<이 실행되더라구요? friend는 멤버함수 operat<이 없을때 실행되는거 같은데 혹시 이러한 우선순위에 대해서 찾아볼려고 하는데 혹시 키워드가 있는 내용인건가요? #include <vector> #include <iostream> #include <algorithm> using namespace std; class Cents { private: int m_cents; public: Cents(const int& input = 0) : m_cents(input) {} int getCents() const { return m_cents; } int& getCents() { return m_cents; } friend bool operator == (const Cents& c1, const Cents &c2) { return c1.m_cents == c2.m_cents; } friend bool operator<(const Cents& c1, const Cents& c2) { cout << "friend인가?" << endl; return c1.m_cents < c2.m_cents; } bool operator<(const Cents& c2) { cout << "어떤게 실행되나?" << endl; return m_cents < c2.m_cents; } friend bool operator>(const Cents& c1, const Cents& c2) { cout << "friend인가?" << endl; return c1.m_cents > c2.m_cents; } friend std::ostream& operator<<(std::ostream &out, const Cents& cents) { //멤버함수로 안되나? out << cents.m_cents; // 한푼도 없을때 참이 나오도록 구현 return out; // 하는 이유는 chaing할려는 것 이러면 cout<<Point<<... 이렇게 연속적으로 쓸수 있다. } friend std::istream& operator>>(std::istream& in, Cents ¢s) {//입력을 받아 수행해야하므로 const 하면 안된다. in >> cents.m_cents; return in; } }; int main() { vector<Cents> arr(20); for (int i = 0; i < 20; i++) { arr[i].getCents() = i; } std::random_shuffle(arr.begin(), arr.end()); for (auto ele : arr) cout << ele << " "; cout << endl; std::sort(arr.begin(), arr.end()); for (auto ele : arr) cout << ele << " "; cout << endl; return 0; }
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
선생님 수강기한이요....
선생님 수강기한이요..... 제것은 기한이 있는데,,, 지금 구매하는 사람들은 무제한이네요.... • 수강을 계속 듣고 싶은데요.... 또 결재를 해야 하나요?
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
선생님 수강기한이요.....
선생님 수강기한이요..... 제것은 기한이 있는데,,, 지금 구매하는 사람들은 무제한이네요.... • 수강을 계속 듣고 싶은데요.... 또 결재를 해야 하나요?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
선생님 수강기한이요.....
선생님 수강기한이요..... 제것은 기한이 있는데,,,, 지금 구매하는 사람들은 무제한이네요.... • 수강을 계속 듣고 싶은데요.... 또 결재를 해야 하나요?
-
미해결홍정모의 따라하며 배우는 C언어
1:15초 쯤 말씀해주신 문자포인터 질문
문자포인터 char *str = "Hello, World"; 얘는 "문자열의 첫 번째 주소를 가리키고만 있는 상황이에요." 라고 말씀해주셨는데 교수님의 말씀대로라면 첫번째 "H"의 주소값을 가리키므로 pointer to pointer(이중 포인터) 가 되는것인가요? 첫 번째의 주소면 H의 주소인데 주소를 가리키면 포인터를 가리키는 이중포인터가 맞나요? 저는 개인적으로 "문자열의 첫 번째 요소를 가리킨다." 고 생각했습니다. 제 생각대로 첫 번째 요소를 가리킨다면 "H"를 가리켜, 해당 "H"의 주소값을 str이 가지는 것이 되는데요. 문자포인터가 첫 번째 주소를 가리키는게 아니라, 첫 번째 요소를 가리켜 해당 주소를 값으로 가지는게 아닌가요? 주소를 가리킨다. 는 말이 살짝 헷갈립니다!
-
미해결홍정모의 따라하며 배우는 C언어
6:50초 쯤에 배열 words의 길이 21
같은 비쥬얼 스튜디오 프로그램인데 컴퓨터마다 다른가요? 같은 코드에 같은 프로그램인데 저는 크기 MAXLENGTH 81 그대로 뜨고 14행에서 puts(words)에 경고도 뜨지 않는데요. 혹시 컴퓨터마다 다른지 궁금합니다. 교수님과 마찬가지로 x86이구요.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
회귀 계수와 절편
1. polyfeatures를 한 결과로서 맨처음 feature인 1은 아마 coef_의 결과값의 맨처음 상수와 곱해져서 회귀식에서 절편을 의미하는 듯한데.... model.intercept_ = 1.76 이라는 결과값은 어떤 의미인가요? 2. 그리고 include_bias 설정값에 따라 왜 RMSE 값이 달라지나요? 단지 절편값이 coef_에 나타나느냐 아니냐의 차이 아닌가요 ㅜ
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
jsr-380까지 듣다가.
jsr-380까지 듣다가 이것을 처음부터 스프링으로 만들어 보고자 다음과 같이 하였으나 에러발생하였습니다. package kr.co.softcampus.config; import java.util.List; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // Spring MVC 프로젝트에 관련된 설정을 하는 클래스 @Configuration // Controller 어노테이션이 셋팅되어 있는 클래스를 Controller로 등록한다. @EnableWebMvc // 스캔할 패키지를 지정한다. @ComponentScan("kr.co.softcampus.controller") public class ServletAppContext implements WebMvcConfigurer{ // Controller의 메서드가 반환하는 jsp의 이름 앞뒤에 경로와 확장자를 붙혀주도록 설정한다. @Override public void configureViewResolvers(ViewResolverRegistry registry) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureViewResolvers(registry); registry.jsp("/WEB-INF/view/", ".jsp"); } // 정적 파일의 경로를 매핑한다. @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // TODO Auto-generated method stub WebMvcConfigurer.super.addResourceHandlers(registry); registry.addResourceHandler("/**").addResourceLocations("/resources/**/"); } @Bean public ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource res=new ReloadableResourceBundleMessageSource(); res.setBasename("/WEB-INF/properties/error_message"); return res; } @Override public void addFormatters(FormatterRegistry registry) { // TODO Auto-generated method stub } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // TODO Auto-generated method stub } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // TODO Auto-generated method stub } @Override public Validator getValidator() { // TODO Auto-generated method stub return null; } @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { // TODO Auto-generated method stub } @Override public void configureAsyncSupport(AsyncSupportConfigurer configurer) { // TODO Auto-generated method stub } @Override public void configurePathMatch(PathMatchConfigurer configurer) { // TODO Auto-generated method stub } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { // TODO Auto-generated method stub } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) { // TODO Auto-generated method stub } @Override public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { // TODO Auto-generated method stub } @Override public void addInterceptors(InterceptorRegistry registry) { // TODO Auto-generated method stub } @Override public MessageCodesResolver getMessageCodesResolver() { // TODO Auto-generated method stub return null; } @Override public void addViewControllers(ViewControllerRegistry registry) { // TODO Auto-generated method stub } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { // TODO Auto-generated method stub } @Override public void addCorsMappings(CorsRegistry registry) { // TODO Auto-generated method stub } } WebMvcConfigurer.super.configViewResolvers(registry)에서 에러가 발생하는데요 Cannot directly invoke the abstract method configureViewResolvers(ViewResolverRegistry) for the type WebMvcConfigurer 이런 에러메시지가 나옵니다. 그리고 그 밑에 WebMvcConfigurer.super.addResourceHandlers(registry);에서는 이런 에러메시지가 나옵니다. Cannot directly invoke the abstract method addResourceHandlers(ResourceHandlerRegistry) for the type WebMvcConfigurer 어떻게 해야 하는지요
-
미해결대세는 쿠버네티스 (초급~중급편)
9000?? 90??
Service - ClusterIP 파트에서 그림상으로는 9000번 포트가 열려있는데, 강의 말씀으로는 90번이라고 말씀하시네요. 오타인건지요??
-
해결됨정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
return 질문
안녕하세요 영상보다가 질문 있어서 질문합니다. 중간에 String에서 StringBuilder로 출력하는걸 바꿨는데 그럼 return문도 sb로 바꾸고 메소드도 public static StringBuilder로 바꿔줘야 하는거 아닌가요?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
크롤링 후 결과가 3줄씩 출력되는데요
선생님, 안녕하세요. 강의 정말 잘 듣고 있습니다. 그런데 Css selector 사용해서 크롤링하기2 / table 부분에서 코드를 강의와 동일하게 입력했는데 출력 결과물이 다르게 나와서요. 제가 무엇을 실수했는지 좀 알려주시겠어요? 감사합니다. 제가 작성한 코드 res=requests.get("https://davelee-fun.github.io/blog/crawl_html_css.html") soup=BeautifulSoup(res.content,'html.parser') items=soup.select('tr') for item in items: columns=item.select('td') row_str='' for column in columns: row_str +=column.get_text() print(row_str) 결과물 일정 일정커리큘럼 타이틀 일정커리큘럼 타이틀난이도 5.1 ~ 6.15 5.1 ~ 6.15나만의 엣지있는 블로그 사이트 만들기 (취미로 익히는 IT) 5.1 ~ 6.15나만의 엣지있는 블로그 사이트 만들기 (취미로 익히는 IT)초급 6.16 ~ 7.31 6.16 ~ 7.31파이썬과 데이터과학 첫걸음 (IT 기본기 익히기) 6.16 ~ 7.31파이썬과 데이터과학 첫걸음 (IT 기본기 익히기)중급
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
데이터베이스 관계질문
안녕하세요 제로초님관계간 질문이 있어 올립니다.한 유저가 어떤제품을 찜하기 선택시찜하기 버튼의 경우 user와 1 대 다 관계일까요?
-
미해결모의해킹 실무자가 알려주는, 파일 다운로드 취약점 공격 기법과 실무 사례 분석
안녕하세요
안녕하세요. 웹 모의해킹으로 취준하고 있는 취준생인데 혹시 본 강의 내용을 기반으로 블로그 작성을 해도 괜찮을 까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
코드가 레드존이 되어버렸읍니다
제로초님 저는 평소 vscode 프리티어 익스텐션이랑 같이 작업을 하는데 eslintrc extends 에 airbnb를 넣으면 코드가 피를토합니다 prettier는 계속쓰고싶은데 어떡하죠ㅜㅜ막막합니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
패키지 관련 질문입니다!
친절한 설명이 담긴 강의에 너무 감사드립니다문의드릴 사항이 있는데github에 올려주신 자료 중KerasYolo_OpenImage 학습관련하여 아래의 코드가 있던데 혹이 이 패키지는 윈도우에서 사용가능한 패키지인지 궁금합니다!사용가능하면 인스톨 명령어가 어떻게 되는지 궁금합니다!혹시 제가 수업내용을 조금 스킵하면서 들어서수업중에 말씀해주셔는데 못들었다면 죄송합니다 ㅠㅠ from yolo3.model import preprocess_true_boxes, yolo_body, tiny_yolo_body, yolo_loss from yolo3.utils import get_random_data
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
발표 문서(ppt)는 다운로드 방법
안녕하세요. 발표 문서(ppt)는 어디에서 다운로드 가능할까요? 감사합니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
비공개 리포지토리 접속 관련 질문
승인을 받은 후 접속하니 페이지를 찾을 수 없다고 나오네요
-
미해결대세는 쿠버네티스 (초급~중급편)
empty-dir 에러납니다.
강의자료실에 있는 empty-dir 실습용 yaml보면 container1,2를 만드는데...그대로 소스 가져다가 생성해보면 Error: connot find volume 'empty-dir' to mount into container 'container2' 라고 나옵니다. container1은 넘어가고 2만들때 해당 볼륨을 못찾는것 같은 에러인데..왜 에러가나고 생성이 안되는지요? 뿐만 아니라...hostPath역시 위와 마찬가지로 clashLoopBackOff 에러가 뜨면서 정상적으로 pod생성이 안되네요...위에랑 이거랑 문제가 뭘까요? [root@k8s-master yaml]# k get po -n odark NAME READY STATUS RESTARTS AGE pod-1 1/1 Running 1 3h38m pod-2 1/1 Running 1 3h28m pod-volume-3 0/1 CrashLoopBackOff 7 11m