묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[React 1부] 만들고 비교하며 학습하는 React
선생님 delegate함수를 사용하는 부분에 대해서 질문이 있습니다
강의 너무 재밌고 흥미롭습니다 감사합니다 !! 제 질문은 아래와 같습니다. delegate 함수를 호출할 때 아래 코드에서와 같이 화살표 함수를 콜백으로 넘겨주는데요, // KeywordListView.js bindEvents() { delegate(this.element, "click", "li", (event) => this.handleClick(event)); } handleClick(event) { const value = event.target.dataset.keyword; this.emit("@click", { value }); } // helper.js export function delegate(target, eventName, selector, handler) { const emitEvent = (event) => { const potentialElements = qsAll(selector, target); for (const potentialElement of potentialElements) { if (potentialElement === event.target) { return handler.call(event.target, event); } } }; on(target, eventName, emitEvent); } 화살표 함수로 넘기는 이유는 handleClick 함수에 this를 바인딩 하지 않기 위해서인가요? 제가 이해한 의도는 helper의 delegate 함수에서 handler를 호출할 때 call을 이용해서 event.target을 this로 넘겨주는데, handleClick에서는 KeywordListView 클래스가 상속받은 emit함수를 호출하기 위해서, this에 다른 것이 바인딩 되지 않도록 하기 위해 화살표 함수를 사용한 것으로 이해했습니다. 이게 선생님이 코드를 작성하신 의도가 맞는지 확인하고 싶어서 질문드립니다. 감사합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그아웃 -> 마이페이지 properties of null 에러 발생
안녕하세요 제로초님 ! 로그인 상태가 false일 경우, '마이페이지'가 보이도록, 반대일 경우엔 '로그인'이 보이도록 페이지를 만들었습니다. 문제는 마이페이지(유저프로필)에서 로그아웃 버튼을 누르면 user가 정상적으로 null값으로 바뀌는데 여기서 왜 Posts 속성이 없다는 에러가 발생하는지 모르겠습니다.. 로그아웃을 하는데 왜 마이페이지 에러가 발생하는걸까요 ㅠㅠ.. //components/AppLayout.js import React from "react"; import PropTypes from "prop-types"; import Link from "next/link"; import { Row, Col } from "antd"; import styles from '../styles/styles.module.css'; import { useSelector } from 'react-redux'; const AppLayout = ({ children }) => { const {logInDone} = useSelector((state) => state.user); return ( <> <Link href="/"> <a><h1 className={styles.logo}>놀멍쉬멍 <img src="logoIcon.png" alt="logoImage" style={{width: '24px'}} /></h1> </a> </Link> <div>{children}</div> <Row className={styles.bottomNav}> <Col xs={4}><Link href="/writePost"><a>새글작성</a></Link></Col> <Col xs={4}><Link href="/community"><a>커뮤니티</a></Link></Col> <Col xs={8}> <Link href="/"> <a><img className={styles.centerNav} src='../icon.png'/></a> </Link> </Col> <Col xs={4}><Link href="/findPlace"><a>장소검색</a></Link></Col> {logInDone ? <Col xs={4}><Link href="/mypage"><a>마이페이지</a></Link></Col> : <Col xs={4}><Link href="/login"><a>로그인</a></Link></Col>} </Row> </> ); }; AppLayout.propTypes = { children: PropTypes.node.isRequired, }; export default AppLayout; //pages/login.js import React from "react"; import AppLayout from "../components/AppLayout"; import Head from 'next/head'; import MyPage from '../components/MyPage'; import LoginForm from '../components/LoginForm'; import { useSelector } from 'react-redux'; const login = () => { const {logInDone} = useSelector((state) => state.user); return ( <> <Head> <meta charSet="utf-8" /> <title>로그인 | 놀멍쉬멍</title> </Head> <AppLayout> { logInDone ? <MyPage /> : <LoginForm />} </AppLayout> </> ); }; export default login; //pages/myPage.js import React from 'react'; import AppLayout from '../components/AppLayout'; import Head from 'next/head'; import MyPage from '../components/MyPage'; import LoginForm from '../components/LoginForm'; import { useSelector } from 'react-redux'; const myPage = () => { const {logInDone} = useSelector((state) => state.user); return ( <> <Head> <meta charSet="utf-8" /> <title>마이페이지 | 놀멍쉬멍</title> </Head> <AppLayout> { logInDone ? <MyPage /> : <LoginForm />} </AppLayout> </> ); }; export default myPage; //components/LoginForm.js import React, { useCallback, useEffect } from 'react'; import {Form, Input, Button} from 'antd'; import Link from 'next/link'; import styles from '../styles/login.module.css'; import styled from 'styled-components'; import useInput from '../hooks/useInput'; import { useDispatch, useSelector } from 'react-redux'; import {loginRequestAction} from '../reducers/user'; const LoginBtn = styled(Button)` background-color: white; border: 1px solid #857171; max-width: 600px; margin: 20px 0; width: 100%; margin-bottom: 40px; height: 40px; &:hover { background-color: #857171; border: 1px solid #857171; color: white; } `; const LoginInput = styled(Input)` height: 40px; `; const LoginForm = () => { const dispatch = useDispatch(); const {logInLoading} = useSelector((state) => state.user); const [email, onChangeEmail] = useInput(''); const [password, onChangePassword] = useInput(''); const onSubmitBtn = useCallback(() => { console.log(email, password); dispatch(loginRequestAction({email, password})); }, [email, password]); return ( <> <Form className={styles.loginForm} onFinish={onSubmitBtn}> <div className={styles.inputWrapper}> <label htmlFor="user-email">이메일</label> <br /> <LoginInput name="user-email" type="email" value={email} onChange={onChangeEmail} required/> </div> <div className={styles.inputWrapper}> <label htmlFor="user-password">비밀번호</label> <br /> <LoginInput name="user-password" type="password" value={password} onChange={onChangePassword} required /> </div> <div className={styles.buttonWrapper}> <LoginBtn htmlType="submit" loading={logInLoading}>로그인</LoginBtn> < br/> <span>놀멍쉬멍이 처음이신가요?</span> <Link href="/signup"><a>회원가입</a></Link> </div> </Form> </> ); }; export default LoginForm; //components/MyPage.js import React, { useCallback } from 'react'; import {Card, Avatar, Button} from 'antd'; import FollowList from './FollowList'; import styled from 'styled-components'; import page from '../styles/wrapper.module.css'; import { useDispatch, useSelector } from 'react-redux'; import {logoutRequestAction} from '../reducers/user'; const LogoutBtnWrapper = styled.div` display: flex; justify-content: flex-end; button { border: none; background-color: transparent; color: gray; } `; const MyPage = () => { const dispatch = useDispatch(); const {logOutLoading, user} = useSelector((state) => state.user); const onLogout = useCallback(() => { dispatch(logoutRequestAction()); }, []); return ( <div className={page.pageWrapper}> <div> <Card cover={ <img alt="my_profile_pic" src="../cute.jpeg" />} actions={[ <div key="writedPost">작성한 글<br />{user.Posts.length}</div>, <div key="followings">팔로잉<br />{user.Followings.length}</div>, <div key="followers">팔로우<br />{user.Followers.length}</div> ]} > <Card.Meta avatar={<Avatar>{user.nickname[0]}</Avatar>} title={user.nickname} description="개냥이 키웁니다 우하하" /> <br /> <LogoutBtnWrapper> <Button onClick={onLogout} loading={logOutLoading}>로그아웃</Button> </LogoutBtnWrapper> </Card> </div> <div> <div style={{margin: '20px 0'}}> <FollowList header="나를 팔로잉하는 사람" data={user.Followings}/> <FollowList header="내가 팔로우하는 사람" data={user.Followers}/> </div> </div> </div> ); }; export default MyPage;
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
pandas profiling version 오류와 profiling report를 htlm 파일 형식으로 저장하는데 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ㅇ첫 강의부터 막히는 부분이 있어도 질문하지 않고 혼자 해보려고 했는데 이건 계속 해봐도 전진이 안되네요... 일단 pandas_profiling.__version__을 하면 __version__ 이라는 모듈이없다고 에러가 나네요 !pip show pandas_profiling 으로 버젼이 2.8 이라는것은 확인했지만 그래도 에러가 계속 납니다. 밑에 질문들 보고 다시 해보기 했는데 더이상 진전이 없어서 질문드립니다
-
미해결대세는 쿠버네티스 (초급~중급편)
'Namespace, ResourceQuota, LimitRange - 실습' 강의 소리 안 들림
안녕하세요. 우선 좋은 강의 감사합니다. 그런데 전체적으로 녹음 상태가 들쭉날쭉이라 학습 진행이 원활하지 않은 부분들이 있습니다. 그 중, 'Namespace, ResourceQuota, LimitRange - 실습'의 10:57부터는 일시적으로 아예 소리가 들리지 않네요.. 아마 Pod 생성 이후 등록 된 ResourceQuota는 기 생성 된 Pod들에 영향을 주지 않는다는 내용으로 추측이 됩니다. (정확히 어떤 내용인가요?) 혹시 이런 음질이 고르지 못한 부분들에 대해 재녹음을 해주실 수 있을까요? 지속적으로 피드백을 반영하시고, 강의 내용을 업그레이드 해주시는 모습에 좋은 인상을 받았습니다. P.S : 매 강의 시작과 끝 부분에 5초정도 들어가는 페이지 부분은, 제거를 해주시는 편이 좀 더 연속적인 학습에 도움이 될 것 같다는 개인적인 의견도 드려봅니다. ^^;
-
미해결애플 웹사이트 인터랙션 클론!
강의 잘보았습니다 간단한 질문이있는데요!
버그수정 3번에서 강의하신 텍스트 색상이 알록달록하게 변경되어 시인성이 좋게보이는데 이런건 어떻게하는걸까요?? 1코님이랑 똑같이하려면 어떤 익스텐션을 설치해야하는지 궁금합니다! eslint랑 프리티어를 같이쓰고있는데도 문법시인성이 잘눈에 안뛰네요 ㅜㅜ 추가로 Netlify 에서 무료호스팅을 이용해 만든 웹에접속했더니 로딩속도가 애플과 다르게 30초정도 걸립니다 지금 바로 해결은 못하더라도 애플과 로딩시간이 다른 원인은 알고싶네요 현재스크롤 섹션부분만 디스플레이하는 최적화까지 진행했는데 왜 로딩속도에서 큰차이가 날까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
로그인 후 다시 로그인화면으로 갑니다.
로그인을 완료 한 상태로, "/"화면으로 이동 을합니다. 그후 다시 /login으로 가면, login화면으로 가버리는데, 이건 어쩔수가 없는건가요??
-
미해결홍정모의 따라하며 배우는 C언어
12분 30초쯤 질문입니다
float arr2d[2][4] = { {1.0f, 2.0f, 3.0f, 4.0f}, {5.0f, 6.0f, 7.0f, 8.0f} }; float (*pa)[4]; // a SINGLE pointer to an array of 4 floats pa = arr2d; 위에서 pa는 an array of 4 floats를 가리키는 pointer라고 했는데 그러면 pa=arr2d[0]; 이 되어야 하는 건 아닌가요? pa가 어떻게 2d array인 arr2d를 가리킬 수 있게 되는지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
리스트 디버그 질문입니다.
0번 노드에 새로운 노드의 경로가 추가됐을 경우를 가정해서 100, 101, 102, 103을 추가했습니다. 이게 출력을 하면 위에 사진처럼 잘 나오는데 디버그 할때는 추가된게 보이지가 않습니다. 뭐가 문제일까요..?
-
해결됨스스로 구축하는 AWS 클라우드 인프라 - 기본편
안녕하세요 라우팅 테이블 질문 있습니다!
안녕하세요 . 제가 강의를 다 듣고 복습하는 차원에서 다시 처부터 하나하나씩 보고 있는중인데 라우팅 테이블에 대해 질문이 있어서 글 남깁니다! 현재 라우팅 테이블이 총 3개가 있는데요 1. private subnet 2개 -> Destination: Nat Gateway (nat을 통해 외부로 나가라) 2. private subnet 2개 -> Destination: Nat Gateway (nat을 통해 외부로 나가라) 3. public subnet 2개 -> Destination: InternetGateway 질문1 이렇게 3개의 라우팅 테이블이 있는데 처음에 강사님께서 private ec2에서 외부로 리소스가 나갈때는 Nat를 통해 나간다하셨는데 그럼 1번과 2번을 통해 Nat으로 온 리소스를 3번 라우팅테이블 이 받아 IGW 로 간다고 이해한게 맞는건가요?? 질문2 라우팅 테이블 할떄 나가는거 말고 들어오는건 따로 설정 안해줘도 되는건가요??
-
해결됨Spring Boot JWT Tutorial
permitAll()질문드립니다.
기존질문 - security config에서 antMatchers.permitAll()이 작동하지 않는 것 같습니다. 찾아보니 csrf때문이란 말도 있어 csrf.disable사용해봐도 똑같이 계속 401에러가 뜹니다. ㅠ 왜 이러는 걸까요.. ++해결 config파일을 메인클래스와 같은 패키지안에 넣지않아서 bean을 인식하지 못하는 경우였습니다. 같은 패키지안에 넣으니 해결되었습니다!! 추가질문!!! 근데 추가적으로 왜 메인클래스안에 넣지않으면 인식이 되지않는 것인지 궁금합니다. 이게 스프링부트 작동순서와 연관된 것 인가요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
컨테이너별 하드웨어를 할당받을 때
강의에서처럼 컨테이너 별로 하드웨어 자원을 할당받을 때, 하나의 예를 들면 cpu의 경우 Cpu 코어 별로 컨테이너 별 할당을 하게 되는 방식인건지 아니면, 논리적으로 코어 조차도 분할해서 각 컨테이너가 사용할 수 있는 부분이 구분되는 것인지 궁금합니다. 그리고 앞선 강의에서 도커가 각 컨테이너들을 격리시키는 방법으로 namespaces와 c group이라고 알려주셨는데, 이 기능들이 리눅스 컨테이너의 기술이더라구요. 그래서 그런데 도커가 리눅스 컨테이너 기반의 기술인건가요??
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
[가장짧은 문자거리] - 찾으려는 E의 위치를 담고 거리를 비교하는 방식은 어떤가요 ?
function solution(s, t) { let answer = []; let n = s.length; let distance = 0; let eArr = []; // 문자열의 e 찾아 담아라. s.split("").forEach((item, i) => { if (item === t) eArr.push(i); }); let arr = []; let count = 0; // 현재 문자열을 기준으로 e가 담긴 배열의 길이 차이를 뺀 후 최소의 거리 값을 넣어라. for (let i = 0; i < n; i++) { console.log("현재 s :" + s[i]); for (let j = 0; j < eArr.length; j++) { let eDistance = eArr[j]; let diff = Math.abs(i - eDistance); arr.push(diff); count = Math.min(...arr); } answer += `${count} `; arr = []; } return answer; }
-
미해결Vue로 Nodebird SNS 만들기
글작성 500에러 질문드립니다
안녕하십니까 현재 제로초님 강의잘듣고있습니다. 강의를 보고 적용하던중 에러를 마주하여 질문드립니다. 현재 4-17부분 post를하는 부분을 하던중에 에러가 발생합니다. 로그인을한뒤 파일을올리고 짹짹버튼클릭시 500번대 에러가 발생합니다.. 네트워크탭에서는 두개가 같이뜨는데 204 No Content 가 먼저뜨고 500 Internal Server Error이뜹니다.. 제가 혹시오타가있을까싶어 강사님 깃허브를 통째로 붙여넣어보기도했는데 같은에러가 발생합니다. 서버도 껏다켜보고 코드도 점검해봤는데 도저히 해결이 되지않아 질문드립니다. 이후에 새로고침을하고 로그인 시도시 401에러가 발생하여 로그인도 되지않습니다 해결방법을 제시해주시면 너무감사하겠습니다
-
해결됨홍정모의 따라하며 배우는 C언어
read_books2 런타임 에러 질문입니다.
#include "Header.h" int main() { int temp; int n = 3; struct book* my_books = (struct book*)malloc(sizeof(struct book) * n); if (!my_books) { printf("Malloc failed\n"); exit(1); } my_books[0] = (struct book){ "The Great Gatsby","F. Scott Fitzgerald" }; my_books[1] = (struct book){ "Hamlet","William Shakespeare" }; my_books[2] = (struct book){ "The Odyssey","Homer" }; print_books(my_books, n); printf("\nWriting to a file.\n"); write_books("books.txt", my_books, n); free(my_books); // 1번째 free. n = 0; printf("Done.\n"); printf("\nPress any key to read data from a file.\n\n"); temp = _getch(); //my_books = read_books("books.txt", &n); read_books2("books.txt", &my_books, &n); print_books(my_books, n); free(my_books); // 2번째 free. n = 0; return 0; } void read_books2(const char* filename, struct book** books_dptr, int* n) // read_book와 같은 기능, 다른 구조 { FILE* fp = fopen(filename, "r"); if (fp == NULL) { printf("Can't open file\n"); exit(1); } fscanf(fp, "%d%*c", n); for (int i = 0; i < *n; ++i) fscanf(fp, "%[^\n]%*c%[^\n]%*c", (*books_dptr)[i].name, (*books_dptr)[i].author); fclose(fp); } 안녕하세요. read_books2 구현에 의문이 있어 질문 드립니다. 해당 코드는 제가 직접 작성한 코드로 read_books2 이외의 코드는 이상이 없고 강의 코드와 별 차이가 없어 생략했습니다. 해당 코드를 그대로 실행하면 런타임 에러가 발생합니다. 커뮤니티의 질문들을 살펴보고 실험해보니 2번째 free(my_books)가 이미 반환한 메모리를 또다시 반환하려해서 오류가 발생했다는것을 찾았습니다. 하지만 약간의 의문이 있습니다. 여러번 실험해본 결과 free(my_books)가 2번 중복되지 않고 1번만 실행되면 위치에 상관없이 오류가 발생하지 않았습니다. 그런데 2번째 free를 주석처리하고 1번째 free만 사용하는 경우 이미 반환된 my_books를 가지고 read_books2의 인수로 넣어 사용하는데 아무 오류가 없는 이유를 모르겠습니다. 답변 부탁드립니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
Error: configmap "cm-file" not found 에러 질문드립니다.
안녕하십니까 강사님 아래와 같이 파일을 추가 하였으나 파드 추가시 Error: configmap "cm-file" not found 나와 혹시 문의드릴 수있을까 합니다.강의 너무 잘 듣고 있습니다. 감사합니다. [root@k8s-master configmap]# ls file-c.txt file-s.txt [root@k8s-master configmap]# kubectl create configmap cm-file --from-file=./file-c.txt error: failed to create configmap: configmaps "cm-file" already exists
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
http 상태코드에 관하여
안녕하세요 제로초님 저는 이 강의로 유익하고 재미있게 공부를 하는 프론트개발 초보자 입니다.저는 여태 백엔드쪽에서 내려주는 상태들 200ok, 401 error, 500error 등 http상태코드가 자동으로 나오는줄 알았는데 백엔드에서 직접 내려주는걸 알게되었어요. 조금 이상한 생각일지도 모르겠으나 백엔드 개발자가 악의적으로 프론트 에러처럼 서버 에러(500번대)도 400번대로 내려주고 혹은 백엔드개발자도 초보여서 이게 400에러인지, 500에러인지 헷갈려서 잘못 내려주는등의 실수를 할 수 있는건가요? 그렇다면 저같은 초보자들은 상태코드를 나침반 삼아 어디서 에러를 내는지 찾는데 방해가 될꺼같거든요.... ㅠㅜ 이런 사소한 질문까지 드려서 죄송합니다. 급한건 아니니 다른 질문에 답변하시고 시간나실때 답변 부탁드려요
-
미해결UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
질문있습니다.!
imageManager.requestImage 메소드에서 저화질 일 경우 마지막 클로저 함수에서 info dictionary에서 PHImageResultIsDegradedKey값이 1 이라고 하셨는데 deliveryMode 를 fastFormat으로 설정하면 값이 0이 나오는데 맞는 건가요? 강의에서 fastFormat모드는 저화질 모드라고 하셔서 궁금해서 질문 드립니다. 그리고 하나 더 질문 있습니다 ㅠㅠ. checkPermission함수에서 왜 DispatchQeue.main.async를 사용 했는 지 잘 모르겠습니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
ConcurrencyPolicy 에 대한 질문입니다.
Forbid와 Replace의 차이가 잘 이해가 되지 않아서 질문드립니다. Forbid의 경우에는 20분 때 잡과 파드가 생성되면 21분 때는 스킵되고 22분 때 20분 때의 파드가 삭제가 되면서 22분 때의 잡과 파드가 생성되는 것이고 Replace는 30분때 잡과 파드가 생성되면 31분 때는 스킵되고 32분 때 30분 때의 140초의 시간이 끝나면서 30분 때의 파드를 32분 때 잡이 생성되면서 연결해서 사용한다고 이해했는데 뒷 부분을 강의를 듣다보니 잘 못 이해한 것 같아 어느 부분이 잘 못 이해한 것인지 알 수 있을까요? 항상 친절하게 알려주셔서 감사합니다 :)
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
가장 큰 값을 뺴는 이유가 궁금합니다.
예를 들어서 1 2 5 로 7원을 거슬러줄때 dp[6] 이나 dp[5]가 아닌 dp[2] 에서 1을 더한값과 비교하는 것은 dp[5] dp[6]에서 더해줄 경우 1 + 2 + 5 + 1 과 같이 2개의 동전이 겹치는 경우가 발생하는 반면 dp[2]에서 더해줄 경우 매 순간마다 오름차순 덧셈으로 정렬이 되어서 겹치는 것을 방지 할수 있기에 최적의 해임을 보장받기 때문인가요????
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
checked radio 속성
안녕하세요 강의도중 제가 이해한게 맞는지 궁금해서 질문을 남겨요. 질문은 radio 속성입니다 input 에 checked 를 첫번째 tab1인 친구에게 준다고 했을때 화면이 리로드 했을때 그 녀석만 css가 적용이 되는것을 알 수가 있습니다. 그런데 저희가 다른 친구인 tab2 tab3 한테 주면 tab1 의 checkd 가 사라지는걸 알 수가 있는데 그것은 그냥 radio의 속성인 걸까요 무조건 1개만 선택 할 수 있게 하여라!! 또 다른 방법으로 css에서 active라는 클래스를 만들어서 css를 넣어준후 제이쿼리 클릭이벤트로 클릭이 되었을때 다른요소들의 active 클래스는 삭제를 시켜주고 이 요소에게는 active를 add시켜라 라는 코드를 짜도 똑같이 작동할 것 같은데 맞는지 궁금합니다.