묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
Appconfig가 각 클래스로 정보를 뿌릴때
(1) public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } }(2) public class AppConfig { public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } public MemberRepository memberRepository() { return new MemoryMemberRepository(); } }두개의 코드가 있을때 Appconfig에 의해 인스턴스가 생성되고, MemberServiceImpl에 들어간다고 강사님께서 설명해주셧습니다.이때 MemberServiceImpl에서 Appconfig 객체를 생성한다던지, 메서드를 호출하는 코드가 없는데 자동으로 주입되는 이유가 궁금합니다. 감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청드립니다.
인프런 아이디 : er80ys@gmail.com인프런 이메일 : er80ys@gmail.com깃헙 아이디 : er80ys@gmail.com깃헙 Username : jiandaddy1005
-
미해결Vue.js + TypeScript 완벽 가이드
권한 요청드립니다.
안녕하세요.강의 잘 듣고 있습니다.두번째 프로젝트 vue-news github repo 권한 요청드립니다.mykiller4@naver.com감사합니다.
-
해결됨스프링부트 시큐리티 & JWT 강의
시큐리티 필터보다 MyFilter1()을 먼저 실행하는 이유가 궁금합니다.
안녕하세요 강의 잘 듣고있습니다. 감사합니다.강의를 듣다가 MyFilter1()이 시큐리티 필터보다 먼저 실행되야 하는 이유가 궁금해서 질문드립니다.항상 잘 듣고 있습니다.감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
22 강 findById()메소드 질문
1.예2.예3.예 안녕하세요, 코드에대해 궁금한 점이 생겨 질문드립니다. 잘 부탁 드립니다.질문 :@Override public Optional<Member> findById(Long id) { List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper()); return result.stream().findAny(); }select * from member where id = ? 의 결과값은 null 아니면 1개인데 List<Member> result를 사용하는 이유를 모르겠습니다. 혹시 리턴값이 Optional<Member>이기 때문인건가요?? 아직 잘 몰라서 바보같은 질문일 수도 있지만, 잘 부탁드립니다!!
-
해결됨쉽고! 짧고! 강하게! 준비하는 웹디자인기능사 실기
포토샵 CS6 대신 최신 버전으로 강의 들어도 됩니까?
어도비에 포토샵 CS06으로 구매 하려고 하니 CS06 버전은 지금은 판매가 되지 않고 최신 버전으로만 구입 가능하다고 하는데 최신 버전 구입 후 강의 들어도 똑같습니까?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
고급 과정 강의는 언제 오픈 되나요?
플러터 중급 25강 정도 듣고 아주 좋아서 그런데고급 강의는 언제쯤 오픈 될까요?
-
미해결홍정모의 따라하며 배우는 C++
질문이 있습니다
이 코드를 실행 시켰더니 마지막 문장은 안나오는데 왜그런걸까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
더미 데이터 관련 질문드립니다.
page/profileimport React from 'react' import Head from 'next/head' import AppLayout from '../components/AppLayout' import NicknameEditForm from '../components/NicknameEditForm' import FollowList from '../components/FollowList' import { useSelector } from 'react-redux' const Profile = () => { const { me } = useSelector((state) => state.user) return ( <> <Head> <title>내 프로필</title> </Head> <AppLayout> <NicknameEditForm /> <FollowList header="팔로잉 목록" data={me.Followings} /> <FollowList header="팔로워 목록" data={me.Followers} /> </AppLayout> </> ) } export default Profilereducer/userexport const initialState = { logInLoading: false, // 로그인 시도중 logInDone: false, logInErr: null, logOutLoading: false, // 로그아웃 시도중 logOutDone: false, logOutErr: null, signUpLoading: false, // 회원가입 시도중 signUpDone: false, signUpErr: null, changeNickLoading: false, // 닉네임변경 시도중 changeNickDone: false, changeNickErr: null, me: null, signUpData: {}, loginData: {}, } //액션 타입 변수 선언 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' export const SIGN_UP_REQUEST = 'SIGN_UP_REQUEST' export const SIGN_UP_SUCCESS = 'SIGN_UP_SUCCESS' export const SIGN_UP_FAILURE = 'SIGN_UP_FAILURE' export const CHANGE_NICK_REQUEST = 'CHANGE_NICK_REQUEST' export const CHANGE_NICK_SUCCESS = 'CHANGE_NICK_SUCCESS' export const CHANGE_NICK_FAILURE = 'CHANGE_NICK_FAILURE' export const FOLLOW_REQUEST = 'FOLLOW_REQUEST' export const FOLLOW_SUCCESS = 'FOLLOW_SUCCESS' export const FOLLOW_FAILURE = 'FOLLOW_FAILURE' export const UNFOLLOW_REQUEST = 'UNFOLLOW_REQUEST' export const UNFOLLOW_SUCCESS = 'UNFOLLOW_SUCCESS' export const UNFOLLOW_FAILURE = 'UNFOLLOW_FAILURE' //더미데이터 const UserDummy = (data) => { return { ...data, nickname: '향훈', id: 1, Posts: [], Followings: [], Followers: [], } } //로그인 액션 export const loginRequestAction = (data) => { return { type: LOG_IN_REQUEST, data, } } //로그아웃 액션 export const logoutRequestAction = (data) => { return { type: LOG_OUT_REQUEST, data, } } const reducer = (state = initialState, action) => { switch (action.type) { case LOG_IN_REQUEST: return { ...state, logInLoading: true, } case LOG_IN_SUCCESS: return { ...state, logInLoading: false, logInDone: true, me: UserDummy(action.data) } case LOG_IN_FAILURE: return { ...state, logInLoading: false, logInDone: false, } case LOG_OUT_REQUEST: return { ...state, logOutLoading: true, } case LOG_OUT_SUCCESS: return { ...state, logOutLoading: false, logOutDone: true, logInDone: false, me: null, } case LOG_OUT_FAILURE: return { ...state, logOutErr: action.error, } case SIGN_UP_REQUEST: return { ...state, signUpLoading: true, } case SIGN_UP_SUCCESS: return { ...state, signUpLoading: false, signUpDone: true, } case SIGN_UP_FAILURE: return { ...state, signUpErr: action.error } case SIGN_UP_REQUEST: return { ...state, signUpLoading: true, } case SIGN_UP_SUCCESS: return { ...state, signUpLoading: false, signUpDone: true, } case SIGN_UP_FAILURE: return { ...state, signUpErr: action.error } default: return state } } export default reducer선생님 '바뀐 상태 적용하고 eslint 점검하기' 강의 2분09초 부분에서 팔로잉 목록 데이터 부분에 data={me.Followings} 이걸로 넣어주시는데 오류가 안나시더라구요 저는 옵셔널 체이닝을 써야 오류 잡아지던데 제가 뭘 잘못한걸까요? 더미데이터로 넣어준 Followings에 값이 null이여서 랜더링 안되길레 옵셔널 체이닝 사용하여 랜더링 시켰습니다. 그런데 선생님 강의에는 옵셔널 체이닝이나 && 연산자 사용도 안하시는데 오류 안나던데 답변 부탁드립니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
delay(1000)
sagas/user.jsimport { delay, all, fork, put, takeLatest } from "redux-saga/effects"; function logInAPI() { return axios.post('/api/login') } function* logIn(action) { console.log('saga start') try { // const result = yield call(logInAPI, action.data) delay(1000) yield put({ type: 'LOG_IN_SUCCESS', data: action.data }); } catch (err) { yield put({ type: 'LOG_IN_FAILURE', data: err.response.data }); } } function logOutAPI() { return axios.post('/api/logaout') } function* logOut() { try { // const result = yield call(logOutAPI) delay(1000) yield put({ type: 'LOG_OUT_SUCCESS', }); } catch (err) { yield put({ type: 'LOG_OUT_FAILURE', }); } } function* 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) ]) }선생님 로딩스피너가 안돌아가고 바로 로그인이 되어버리는데 delay값을 수정해도 스피너가 안보여서 뭐가 잘못 된건가 하고 put으로 반환하는 type값을 없는값을 줬더니 스피너가 돌아가더라구요 delay값을 아무리 수정해도 바로 로그인 되어비리는데 제 코드가 잘못된건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 부트 예외처리
스프링 부트가 기본으로 제공하는 ExceptionResolver 는 다음과 같다. HandlerExceptionResolverComposite 에 다음 순서로 등록1. ExceptionHandlerExceptionResolver2. ResponseStatusExceptionResolver3. DefaultHandlerExceptionResolver 우선 순위가 가장 낮다.이 내용에서 우리가 직접등록한 MyHandlerExceptionResolver는 우선순위가 어떻게되나요 ?스프링부트가 기본적으로 제공하는 ExceptionResolver와 우리가 직접 등록한 ExceptionResolver가 같은 예외를 처리하는 로직을 담고 있다면 어떤것에서 우선순위가 있어 처리되는지 궁금합니다.
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
[질문] ui automator2 설치방법
[질문] 안녕하세요. 강사님. 영상을 순서대로 따라하고 있습니다. 이 영상에서 ui automator2 모듈 임포트를 하고 있는데요. 이전까지 모듈 설치가 안되어 있어서 오류가 납니다. 1:21에서 "지지난번 시간에 설치했던 ui automator2" 이라고 언급하신 설치방법이 어느 영상에 있는지 못찾고 있습니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
안녕하세요. Top Earners 문제 관련하여 질문 드립니다(GROUP BY, HAVING).
강사님 안녕하세요. Top Earners(GROUP BY, HAVING) 문제 관련하여 질문드립니다.제 생각에는 아래와 같은 쿼리로 답을 도출할 수 있을 것 같은데 의도한 대로 실행되지 않아서 질문드립니다.SELECT months * salary as earnings , count(*)FROM employeeGROUP BY earningsHAVING earnings = MAX(earnings);earnings를 산출earnings를 기준으로 그룹핑earnings의 값이 최대값인 데이터만 조회이런 생각으로 쿼리를 작성하였습니다.그런데 최대 earnings에 해당하는 데이터만 조회되는 것이 아니라, 모든 earnings 별 데이터가 다 조회되는 것으로 나타났습니다.어떤 이유에서 이렇게 동작한 것인지 질문드립니다.강의 덕분에 mysql 잘 배우고 있습니다. 감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
강의 잘 들었습니다. 모듈 명칭을 사용하는 이유가 뭔지 알고 싶습니다.
export const store = new VueX.Store.({ modules: { //모듈 명칭 : 모듈 파일 명 todo : todo }}); App.vue 하위 컴포넌트들에서는 mutation 이름으로 찾을텐데 따로 모듈명을 기재하는 이유는 혹시 store.js 끼리 같은 mutation 이름이 있을 수 있기 떄문에 따로 모듈명을 나누는 건가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
오류 질문
안녕하세요 강사님.테스트가 진행하다가 멈춰버리네요. 강사님 강의에는 전파전략이 있고 깃헙에는 또 없으신데... 어느게 맞는건가 싶기도 합니다... https://github.com/dkaskgkdua/stock제 깃헙에 저장된 소스입니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
flask 서버관련 문의 드립니다
강의 내용 3분 14초 입니다강의 내용을 듣다가, 제가 이해하고있는게 맞는지 궁금하여 문의 드립니다 현재 강의에서는nginx 프록시 서버가 존재하고 nginx 서버 (myweb) 용 서버가 존재고 있습니다. 선생님 설명중에서flask서버는 nginx 프록시 서버가 포워딩을 해줘서 , flask서버의 gunicorn과 직접 통신 한다고 말씀해 주셨습니다 그렇다면nginx서버(myweb) 가 필요없다면, nginx(myweb) 서버(컨테이너)는 안만들어도 되는것인지 궁금합니다. 선생님께 배워서 간단한 웹페이지를 제작중인데flask에서, index.html 파일도 리턴해주도록 되어있어서,굳이 nginx(myweb) 서버는 안만들어도 될거 같은데,제 생각이 맞는건지 틀린건지 모르겠습니다
-
미해결홍정모의 따라하며 배우는 C언어
입력값에 대한 질문
long get_long(void);int main(){ while (1) { printf("Please input a integer between 1 and 100.\n"); long num = get_long(); if (num > 1 && num < 100) { printf("ok\n"); break; } else printf("wrong\n"); } return 0;}long get_long(void){ printf("Please input an integer and press enter.\n"); long input; char c; while (scanf("%ld", &input) != 1) { printf("Your input - "); while ((c = getchar()) != '\n') putchar(c); printf(" - is not an integer. Please try again.\n"); } printf("Your input %ld is integer.\n", input); return input;}이번 수업 코드에서 123d 처럼 정수+문자를 넣게 되면 scanf가 123은 정상적으로 입력받아 올바를 출력은하지만 d가 출력이 잘못 되어서 Please input a integer between 1 and 100.Please input an integer and press enter.123dYour input 123 is integer.wrongPlease input a integer between 1 and 100.Please input an integer and press enter.Your input - d - is not an integer. Please try again.이런식으로 출력되는데 어떻게 해야하나요
-
미해결스프링 핵심 원리 - 기본편
@SpringBootApplication 관련 질문입니다.
안녕하세요.@SpringBootApplication 관련 질문이 있습니다.첫째, @SpringBootApplication 으로 앱을 실행시켰습니다. 해당 어노테이션 내부의 @SpringBootConfiguration 의 내부에 @Configuration 이 있어서 아래와 같이 스프링 컨테이너를 불러오고 싶었는데요, @SpringBootApplication public.class MainApp { public static void main(String[] args) { SpringApplication.run(MainApp.class, args); AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext( MainApp.class); } }아래와 같은 에러가 발생했습니다.Error creating bean with name 'springApplicationAdminRegistrar' defined in class path resource [org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication어느 부분이 잘못된걸까요? 두번째, @SpringBootApplication 말고, @Configuration 이 달려있고 수동으로 @Bean 이 정의된 AppConfig class 를 추가했습니다.앱 실행시, 빈에 동일한 타입 두개가 등록되려고해서 예외가 발생했는데요, 해결하기위해 아래처럼 excludeFilters 를 작성했습니다.@SpringBootApplication @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class MainApp {}해결은 됐는데, @SpringBootApplication 를 보면 내부에 이미 아래처럼 @ComponentSacn 을 사용하고 있었습니다.@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })어노테이션을 중복으로 쓰면 덮어씌어지나해서 밑에 @ComponentScan 을 하나 더 달아봤는데 덮어씌어지더라구요.혹시 이런 경우에는 어떻게 다른 @Configuration 클래스를 무시할 수 있을까요?? 또, 원래 제공하는 어노테이션 내부에 있는 어노테이션들은 덮어씌어지지않게 하는게 맞는걸까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
enum, sealed과 when
안녕하세요! 강의 잘 보고 있습니다!enum과 sealed를 when과 함께 쓰는 부분을 보고 궁금증이 생겨 질문드립니다!제가 느끼기에 when 문은 자바의 switch문과 유사하다고 생각이 들어요. switch문이나 if-else 같은 경우 많이 사용하면 유지보수 측면에서도 힘들고 안 좋다는 의견을 많이 들었어요. 그래서 enum 각 내부 필드가 로직을 가지게 하여 if-else를 없애거나, 팩토리를 만들어 switch문을 최소화하거나 하는식으로 구현한다고 알고 있습니다. 이런 측면에서 if-else나 switch는 많이 쓰지 않는게 좋은 것 같은데 when은 조금 다르게 봐야하는건지 궁금합니다. 실제로도 when을 많이 사용하나요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
파이썬 다운로드
파이썬 기본환경설정3-1 :개발환경설정(Vscode)-windows강의를 듣는데 이 중 어떤 파일을 받아야할지 몰라여기에 뜨는 파일을 받았더니강사님께서 말씀하신 것처럼 다운받은 버전이 아닌 다른 버전이 뜹니다ㅜㅠ이대로 계속 진행해도 괜찮을까요?그리고 다운과정에서 어떤 문제가 있었는지 혹시 아실 수 있을까요?강사님와 보여주셨던 install now, customize installation 화면과 달리 저는 이렇게 뜨기에 modify와 repair을 모두 해보았습니다ㅠㅠ