묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
me에 action data가 저장되지 않는 문제 질문드리겠습니다.
안녕하세요 제로초님 강의정말 잘듣고있습니다. 강의를 들으면서 제 개인프로젝트에 개념을 대입하고있는데 제로초님과 다른 antd 로그인폼을 사용해서인지 모르겠지만 LOG_IN_SUCCESS action을 수행하고 me에 action data가 저장이 안되서인지 nickname이 화면에 출력되지 않더라고요 로그인, 로그아웃 action은 전부 정상적으로 작동하는데 위의 문제만 해결되지 않아서 구글링하고 혼자서 고민해봐도 아무리 답을 찾기 힘들어서 이렇게 질문드립니다 ㅜㅜ 우선 로그인을 한뒤 아래와 같은 객체가 출력됬습니다. // ant design 로그인폼 import React, { useCallback } from 'react'; import { Form, Input, Button, Row } from 'antd'; import { useDispatch, useSelector } from 'react-redux'; import Link from 'next/link'; import { FormWrapper, LoginBtn } from './styles'; import { loginRequestAction } from '../../reducers/user'; const LoginForm = () => { const dispatch = useDispatch(); const { isLoggingIn } = useSelector((state) => state.user); const onSubmitForm = useCallback((value) => { console.log(value); dispatch(loginRequestAction(value)); }, []); return ( <FormWrapper onFinish={onSubmitForm} name="loginForm" size='large'> <Form.Item name="id" rules={[ { type: 'text', }, { required: true, message: '아이디를 입력하세요.', } ]} > <Input placeholder='Enter your Id'/> </Form.Item> <Form.Item name="password" rules={[ { required: true, message: '비밀번호를 입력하세요.', } ]} > <Input.Password placeholder='Enter your Password' /> </Form.Item> <Row align='end'> <LoginBtn type='primary' htmlType='submit' loading={isLoggingIn}>로그인</LoginBtn> <Link href='/signup'><a><Button type='primary'>회원가입</Button></a></Link> </Row> </FormWrapper> ) }; export default LoginForm; 그리고 아래는 질문에 참고할 수 있는 추가 코드입니다 // sagas/user.js파일 import { all, fork, delay, put, takeLatest } from 'redux-saga/effects'; // function logInAPI(data) { // return axios.post('/api/login', data); // } function* logIn(action) { try { // const result = yield call(logInAPI, action.data); yield 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/logout'); // } function* logOut() { try { // const result = yield call(logOutAPI); yield delay(1000); yield put({ type: 'LOG_OUT_SUCCESS', }) } catch(err) { yield put({ type: 'LOG_OUT_FAILURE', data: err.response.data }) } } 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), ]); } // reducers/user.js파일 export const initialState = { isLoggingIn: false, isLoggingOut: false, isLoggedIn: false, me: null, signUpData: {}, loginData: {}, }; export const loginRequestAction = (data) => { return { type: 'LOG_IN_REQUEST', data } }; export const logoutRequestAction = () => { return { type: 'LOG_OUT_REQUEST', } }; const reducer = (state = initialState, action) => { switch (action.type) { case 'LOG_IN_REQUEST': console.log(action); return { ...state, isLoggingIn: true, }; case 'LOG_IN_SUCCESS': return { ...state, isLoggingIn: false, isLoggedIn: true, me: { ...action.data, nickname: 'Mirrer' }, }; case 'LOG_IN_FAILURE': return { ...state, isLoggingIn: false, isLoggedIn: 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 reducer; // me를 사용하는 컴포넌트 (해당 컴포넌트에서 nickname이 화면에 출력되지 않는 문제 발생) import React, { useCallback } from 'react'; import { Badge, Menu } from 'antd'; import Link from 'next/link'; import { useDispatch, useSelector } from 'react-redux'; import { LoadingOutlined } from '@ant-design/icons'; import { logoutRequestAction } from '../../reducers/user'; import { LoggedinMenu, MenuWrapper, HomeIcon, UserIcon, NewsIcon, SpinIcon, LogoutIcon, UserMenu, AvatarWrapper, UserAvatar, UserName } from './styles'; const LoginMenu = () => { const dispatch = useDispatch(); const { isLoggingOut, me } = useSelector((state) => state.user); const onLogout = useCallback((e) => { console.log(e); dispatch(logoutRequestAction()); }, []); return ( <nav> <LoggedinMenu mode='horizontal'> <MenuWrapper> <Menu.Item key='home' icon={<HomeIcon />} ><Link href="/"><a>Home</a></Link></Menu.Item> <Menu.Item key='myPage' icon={<UserIcon />} ><Link href="/profile"><a>My Page</a></Link></Menu.Item> <Menu.SubMenu key='news' title='새소식' icon={<Badge dot><NewsIcon /></Badge>} > <Menu.Item key="like-comment-alert1"> <p>User1님이 작성글에 좋아요를 눌렀습니다.</p> </Menu.Item> <Menu.Item key="like-comment-alert2"> <p>User2님이 작성글에 댓글을 등록했습니다.</p> </Menu.Item> </Menu.SubMenu> { isLoggingOut ? <Menu.Item><SpinIcon indicator={<LoadingOutlined />} /></Menu.Item> : <Menu.Item key='logout' icon={<LogoutIcon />} onClick={onLogout} >Logout</Menu.Item> } </MenuWrapper> <UserMenu> <AvatarWrapper key='userAvatar' icon={<UserAvatar /> } ></AvatarWrapper> <UserName key='user-name'>{me.nickname}</UserName> </UserMenu> </LoggedinMenu> </nav> ) }; export default LoginMenu;
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
스태킹 앙상블 코드 구현 중 오류 관련 건
안녕하세요.강의를 수강 중인 학생 이라고 합니다.강의를 쭉 수강하던 중에 4.10(코드엔 4.11) 스태킹 앙상블에서 수업을 따라서 코드를 수행해보던 중에4번째 "knn_pred = knn_clf.predict(X_test)" 부분을 실행하면 아래와 같은 오류가 발생을 하고 있습니다.KNeighborsClassifier를 수행하던 중에 생기는 오류 같은데 어떻게 조치 하면 될지 알려주시면 감사하겠습니다.밑에 CV셋 기반의 스태킹에서도 동일한 오류가 나오고 있어서 수행을 못하고 있습니다.AttributeError: 'NoneType' object has no attribute 'split'
-
미해결빅데이터분석기사 실기대비 (R 활용)
덕분에 합격했습니다.
이번 4회 실기시험에서 덕분에 합격했습니다. 기존 시험과 문제유형은 많이 바뀌었지만 처음에 어떻게 공부할지 감 조차 잡지못할 때 이 강의가 초행길을 잘 인도해주었습니다. 작업형 1 날짜 선별 문제와 작업형 2 다지분류 문제는 추가적인 공부가 있어야 풀 수 있었지만 저는 이 강의를 통해 기초를 쌓았고 이 강의가 없었으면 추가적인 공부를 엄두도 못냈을 것 같습니다 덕분에 합격했습니다. 다시 한 번 감사드립니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다!
인프런 아이디 : royeon0124 인프런 이메일 : royeon0124@gmail.com 깃헙 아이디 : ns2974@hanmail.net 깃헙 Username : ns2974
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
1차 캐시에 관하여 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하십니까! 선생님 강의를 들으며 jpa를 들으며 실력을 늘리고 있는 학생입니다. 질문을 드리기에 앞서 항상이렇게 자세하고 좋은 강의를 준비해주셔서 감사합니다. 질문내용은 이렇습니다. (테스트를 위해 구성을 제가 구성한 엔티티 입니다.) 구성 엔티티 (사진 1.1) Member와 Item이 1:N관계로 양방향 매핑 관계로 가져가고 있습니다. 연관관계의 주인은 item으로 설정되어 있는 상황입니다. (사진 1.2) (사진 1.3) 사진1.1과 같은 엔티티구성에서 사진1.2의 코드 처럼 Member의 Item리스트의 프록시객체를 조회 시 사진 1.3과 같이 셀렉 쿼리가 2번 나가는 것을 확인 했습니다. 여기서 2번째 size를 초기화 했을때는 1차캐시에 의해서 쿼리가 나가는게 아닌 1차 캐시에서 엔티티를 찾아와야 한다고 생각했습니다. 이렇게 2번 쿼리가 나가는 이유가 1차캐시에 컬렉션 매퍼 클래스가 캐시가 되지 않아서 인가요? 혹시 제가 놓친 부분이 있는지 모르겠습니다....
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
Module index.html 오류메세지
이제 처음 강의듣고 modul폴더에서 작업해 콘솔창에서 결과확인해 보려하니.. 아래와 같은 오류가 발행하는데... 소스를 여러번 돌려보고 따라 해봐도.. 타이핑 오류는 아닌것 같은데 선생님 소스 좀 확인 부탁드리겠습니다.~
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
setData에서 filter하는 부분에 질문있습니다!
안녕하세요! 먼저 강의 제작해주셔서 감사합니다. 많은 도움이 되고있어요!! 14분20분 부터 날짜에 따라 일기 필터링 하는 부분인 setData( diaryList.filter((it) => firstDay <= it.date && it.date <= lastDay) ); 이 코드에서 &&가 어떤식으로 사용되었는지 잘 모르겠어요..
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
저는 큐를 사용하지 않았는데요, 반드시 큐를 사용해야만 풀 수 있는 문제들이 있을까요?
안녕하세요 이중 for문으로 모든 맵의 좌표를 돌면서 1을 발견하면 0으로 만들고 cnt++ 그 좌표에서 인접한 모든 좌표(dx, dy 이용)에서 1을 찾고, 1을 찾으면 위 반복하는 형식으로 찾아낸 1과 연결된 모든 1을 0으로 만드는 식으로 재귀해서(DFS 풀 때 처럼) 풀었는데요, 이 문제를 처음 봤을 때는 큐와 BFS를 사용해야겠다는 생각이 안 떠올랐는데, 혹시 큐와 BFS를 사용해야만 수월하게 풀 수 있는 문제가 있을까요?
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
선생님 안녕하세요. 렌더링 질문있습니다.
Counter 함수를 정의하고 상태가 변화하면서 리렌더링 되는지 확인하려고 console을 찍어봤는데 영상과 다르게 두 번 찍히더라구요. App.js에서 Counter 컴포넌트를 두 번 정의하지도 않았는데 console이 두 번 찍히는 경우는 어떤게 잘못된걸까요? 소스 코드는 선생님과 동일합니다.
-
미해결Vue.js 시작하기 - Age of Vue.js
VSCode 오류 : "이 시스템에서 스크립트를 실행할 수 없으므로 ..." <-- 오류 해결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://hellcoding.tistory.com/entry/VSCode-%EC%98%A4%EB%A5%98-%EC%9D%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC-%EC%8B%A4%ED%96%89%ED%95%A0-%EC%88%98-%EC%97%86%EC%9C%BC%EB%AF%80%EB%A1%9C 아래에 다른분도 링크남겨주셨는데 명령어 복사가 안돼서.. 똑같은 해결방법으로 스크립트 실행안되는 오류 잡는 링크 공유드립니다
-
미해결PHP 7+ 프로그래밍
restore_include_path 오류
restore_include_path 라는 함수를 못 찾는 것 같은데 이유가 뭘까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository 에러
사진과 같이 에러가 발생합니다. 실행시 java: cannot find symbol symbol: class JdbcTemplateMemberRepository location: package hello.hellospring.repository 라고 뜨는데 뭐가 문제일까요..
-
미해결실전! 스프링 데이터 JPA
현업에서 updatedAt 을 설계하나요?! (시스템/비즈니스 입장에서 )
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 영한님 혹은 서포터즈 여러분 안녕하세요!강의를 열심히 수강하고 있었는데..프로젝트를 수행하던 도중 의문이 들어 하나 질문할게요! ㅎcreatedAt이나 updatedAt을 이용하면 운영상에 발생한 이슈들을 추적할 때 도움이 되는 것으로 알고 있어요!다만 updatedAt은 Entity 객체 혹은, DB의 row 의 일부분이 변경되면 바뀌는 것으로 알고 있거든요!이부분에서 질문 드립니다 ! 게시글 조회수가 올라가는 로직이 있다는 가정하에 이로 인하여 게시글 수정일시가 변경되면 안된다고 할 때 JPA/스프링에서 제공하는 변경감지 updatedAt을 사용할 수가 없거든요!이때는 별도로 시스템차원에서 변경한 systemUpdatedAt 과 비즈니스 의미상으로 변경한 businessUpdatedAt 등으로 나누는 것이 좋을까요??기타)createdAt은 시스템 입장에서 변경 / 비즈니스 입장에서 변경한 내역이 똑같은 것 같아용!
-
미해결스프링 핵심 원리 - 고급편
수업 내용중에 2분 40초쯤(템플릿메서드패턴 예제 1)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. logic1() 과 logic2()의 로직이 거의 비슷한데 시간은 계속해서 다른 것으로 보입니다. 혹시 원인을 알 수 있을까요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
제로초님 entity가져오고 에러가 계속나네요... 그대로 복붙했거든요 ..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HOST와 PORT 관련 질문입니다.
다른 분들의 질문들을 읽어보다가 생긴 궁금증입니다. Q1. 여러 도메인을 한번에 처리할 수 있는 서버라는 뜻이 여러 도메인이 같은 IP주소를 갖는다는 의미인건가요? Q2. 그렇다면 각각의 여러 도메인의 포트번호는 다를 수도 있고, 같을 수도 있는지 궁급합니다.
-
해결됨함수형 프로그래밍과 JavaScript ES6+ 응용편
뷰 포트에 보이는 엘리먼트만 이미지 로드하고 싶을 때
_.go( Images.fetch(), Images.tepl, $.el, $.append($.qs('body')), _.tap( $.findAll('img'), L.map(img => { const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { new Promise((resolve, reject) => { img.onload = () => resolve(img) img.src = img.getAttribute('lazy-src') img.onerror = () => reject() }).catch(_ => { img.src = 'https://images.chosun.com/resizer/u9nJRxs0BbtjygJ4HzKukecXnOk=/464x0/smart/cloudfront-ap-northeast-1.images.arcpublishing.com/chosun/UVBJZL3RXAB36BDSHVM3MW2WNY.jpg' }) $.addClass('fade-in', img) } }) }) return () => observer.observe(img) }), C.takeAllWithLimit(8), _.each(_ => _) ), $.findAll('.remove'), $.on('click', async ({currentTarget}) => { await Ui.confirm('정말 삭제하시겠습니까?') && _.go( currentTarget, $.closest('.image'), $.remove ) } ) )뷰 포트에 보이는 이미지 엘리먼트만 이미지를 로드해주고 싶은데 이렇게 코드를 작성해도 괜찮을까요? 더 좋은 방법이 있다면 알고 싶습니다!
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
MonggoDB를 쓰신 특별한 이유가 있으실까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결팝스타 공식 뮤비 제작 & 유튜브 2천만 뷰 크리에이터의 애니메이트 X 이모티콘 클래스
브러쉬 질문합니다
- 먼저 유사한 질문이 있었는지 커뮤니티의 '자주 묻는 질문'과 '질문 리스트' 그리고 '강의 소식'에서 검색해 보세요.- 수업 관련 질문은, 강의 번호와 스크린샷을 포함하면 더 확실한 답변을 들을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 작성한 질문은 답변을 들은 후 절대 삭제하지 마세요, 다른 수강생분에게도 도움이 됩니다.- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 혹시 브러쉬 선을 따로 설정하셨을까요? 따라작업하는데 제가 그린 캐릭터는 선이 일반 브러쉬처럼 민둥한데 강사님이 그린 캐릭터는 선이 살짝 오돌토돌한게 브러쉬 차이가 있나싶어서요
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
가시성과 코드 재배치에 관해서 문의드립니다.
안녕하세요. 강사님... 멀티스레드 부분에서 나오는 개념이 어려워 나름의 생각 정리 후 맞는지 확인차 질의드립니다. 1) 동일한 객체에 대해 동일한 수정 순서를 보장한다. 만약 공유자원 A에 스레드 1, 2, 3이 지속적으로 접근 한다고 할 때(Producer 처럼 while(true) { ... } 구조) 특정 시점에 스레드 1이 A에 저장된 값을 읽었고 바로 스레드 2가 A에 저장된 값을 읽었다면 스레드 2가 공유자원 A에서 읽은 값은 적어도 스레드 1이 공유자원 A에서 읽은 값을 포함하여 이후 시점에 변경된 값이 읽혀진다. 2) 코드 재배치 - 코드 재배치는 Cache에 의한 재배치, CPU 파이프라인에 의한 재배치가 있다. -> 단일 스레드에서는 코드 재배치가 이루어져도 절차에 맞게 결과가 나왔지만, 멀티스레드일때는 코드 재배치에 의해 원하는 결과가 나오지 않을 수 있다. 3) 가시성 보장이란 - 스레드 1에서 공유 자원에 대한 값을 변경하고, 바로 스레드 2가 공유 자원에 대한 값을 읽었을 때 스레드 1에서 변경한 값이 읽혀지는 것 (스레드 1의 캐시에서 메모리에 값을 반영한 것) 4) lock_guard<mutex> lock(m); - 해당 코드도 결국에는 단일 스레드에서 동작하는 것 과 동일하기에 원자성을 보장한다고 보아야 되는 것 인지요 ?... 원자성을 보장한다면 동일 객체에 대한 수정 순서를 보장한다고 보면 되는 것이 맞는지 궁금합니다. (코드 재배치 문제는 별 문제가 안될 거 같지만, 가시성은 보장하는지도 궁금해요 ㅠㅠ) 이정도로 해석해도 되는 부분인지요 ..