묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc패턴하니깐 잘 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의와 똑같이 했는데 초반부인 MvcMemberFormServlet부분을 mvc 패턴으로 적용하는 부분이 안됩니다! 저부분 부터 원래 잘 되던 부분들이 servlet으로 등록하기 부분이 다 안되는거 같습니다 구글 폼 올리겠습니다 ! https://drive.google.com/file/d/1yNGsRvNW9nmSlXDdaW5qt0HJfc4W8qQT/view?usp=sharing
-
해결됨비전공자의 전공자 따라잡기 - 데이터베이스,SQL
limit offset 단점
안녕하세요 제로초님.항상 질 좋은 강의 감사합니다.offset 방식으로 pagination 구현 시 데이터가 누락될 수 있다는 단점을 설명해주시면서soft delete 방식으로 구현 시에는 해당 이슈가 괜찮다고 설명해주셨는데요.soft delete 방식으로 구현 시에도 동일한 이슈가 발생할꺼라는 생각이 들어 질문을 남깁니다.soft delete 방식으로 구현 시에도 조회 쿼리를 날릴 때, deleteAt이 null인 값인 data들은 filter 되기 때문에 동일한 이슈가 발생할꺼 같은데 맞을까요?추가로 삭제 연산을 soft delete 방식으로 구현 시, on delete option을 "casecade"로 설정했다면 부모 row가 삭제되었을 때, 자식 row도 soft delete 처리가 되나요?아니면 set null 방식으로 처리가 되나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Session 사용 시 RESTful api users/{userid}에서 userid 가져오기에서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]spring에서 지원하는 서블렛 세션을 사용하면 클라이언트에 JSESSIONID가 쿠키로 전달된다고 알고 있습니다.질문 1. RESTful API 설계 시 유저의 마이페이지 관련 정보를 가져오는 백엔드 api path는 '/users/{userid}'가 올바른가요, '/profile'이 올바른가요? 혹은 각기 다른 api path를 통해 뷰에 해당하는 프론트엔드에서 조립해야 하나요? 질문 2. 위의 질문 대답이 전자라면, 클라이언트가 마이페이지 버튼을 눌렀을 때 클라이언트에게 userid가 없고 JSESSIONID만 있는 상태인데, userid를 가져오는 과정을 거친 후에 '/users/{userid}'를 실행해야 하나요? 혹은 로그인 시 userid를 쿠키 등으로 클라이언트에게 전달하여 클라이언트가 갖고 있도록 해야 하나요? 실무에서는 어떤 방식을 사용하는지 궁금합니다. 질문 3. 같은 맥락으로 회원탈퇴 기능의 api를 '/users/{userid}'라고 할 때, JSESSIONID만 가지고 있는 클라이언트가 해당 api를 사용하기 위해서는 userid를 가져오는 작업을 수행해야 하나요, 아니면 다른 방법이나 접근방식이 있을까요?
-
미해결풀스택 리액트 라이브코딩 - 간단한 쇼핑몰 만들기
react typescript vite 설치시 오류 질문드립니다.
제목처럼 react typescript vite설치를 하려고 터미널에 yarn create vite를 입력하여 설치를 했습니다.아래 이미지와 같이 typescript를 선택 후, 설치를 완료했는데...아래 이미지들처럼 설치 하자마자 빨간줄들이 난무하고있습니다ㅜㅜ아래 이미지는 package.json 파일입니다.어떻게 해결할 수 있을까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
스크롤 시 dispatch 중복 요청 에러 질문 있습니다.
홈페이지에서 스크롤 시 콜백함수가 실행되는 과정에서 LOAD_POSTS_REQUEST dispatch 요청을 두 번 보내는 상황이 발생하였는데 해결하지 못해서 올립니다./pages/index.jsconst Home = () => { const dispatch = useDispatch(); const { me } = useSelector((state) => state.user); const { mainPosts, hasMorePosts, loadPostLoading, retweetError } = useSelector((state) => state.post); useEffect(() => { if (retweetError) { alert(retweetError); } }, [retweetError]); useEffect(() => { dispatch({ type: LOAD_MY_INFO_REQUEST, }); dispatch({ type: LOAD_POSTS_REQUEST, }); }, []); useEffect(() => { function onScroll() { if ( window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300 ) { if (hasMorePosts && !loadPostLoading) { console.log('스크롤 패칭'); const lastId = mainPosts[mainPosts.length - 1]?.id; console.log('lastId', lastId); dispatch({ type: LOAD_POSTS_REQUEST, lastId, }); } } } window.addEventListener('scroll', onScroll); return () => { window.removeEventListener('scroll', onScroll); }; }, [hasMorePosts, loadPostLoading, mainPosts]); return ( <AppLayout> {me && <PostForm />} {mainPosts.map((post) => ( <PostCard key={post.id} post={post} /> ))} </AppLayout> ); };sagas/post.jsfunction loadPostsAPI(lastId) { return axios.get(`/posts?lastId=${lastId || 0}`); } function* loadPosts(action) { try { const result = yield call(loadPostsAPI, action.data); yield put({ type: LOAD_POSTS_SUCCESS, data: result.data, }); } catch (err) { yield put({ type: LOAD_POSTS_FAILURE, error: err.response.data, }); } } function* watchLoadPosts() { yield throttle(5000, LOAD_POSTS_REQUEST, loadPosts); }reducers/post.jscase LOAD_POSTS_REQUEST: draft.loadPostLoading = true; draft.loadPostDone = false; draft.loadPostError = null; break; case LOAD_POSTS_SUCCESS: draft.loadPostLoading = false; draft.loadPostDone = true; draft.mainPosts = draft.mainPosts.concat(action.data); draft.hasMorePosts = action.data.length === 10; break; case LOAD_POSTS_FAILURE: draft.loadPostLoading = false; draft.loadPostError = action.error; break;첫 페이지 로딩 후에 스크롤 시 onScroll 함수의 '스크롤 패칭'이 콘솔에 두 번 찍히고 LOAD_POSTS_REQUEST 요청이 두 번 가는 것을 확인했고 처음 포스트들을 불러온 이후에 lastId가 0으로 요청이 보내져서 mainPosts에 중복된 게시물이 쌓이는 문제가 있습니다.
-
미해결8명의 비전공자는 어떻게 개발자로 취업했을까
it 적성이라는 게 있을까요?
<1>안녕하세요, 국비학원 수료하고bi(데이터 시각화) 업무를 담당하고 있습니다.사실 제가 하는 건 개발이긴 하지만자바 파이썬을 쓰지 않고, 일반적인 웹개발 같은 것과는 달라요.데이터를 쓸 때 다루는 다른 툴을 많이 써요.그 툴은 주로 엑셀을 쓰고 엑셀 vba를 쓸때도 있습니다. 또한 가끔은 db와 자바스크립트를 씁니다. 그런데 엄청 생소한 툴이다보니까, 제가 상사 요구사항도 말도 못알아 듣고같이 들어온 신입은 화면 4개 만들 때, 저는 한개도 못 만들고 있습니다.지금 일한지 3주 정도 밖에 안되었지만, 옆에 팀원은 금방해내는 걸 저는 한개도 못만드니까 it가 제 길이 맞나라는 생각이 드네요.신입이고, 3주인 것을 감안하더라도 너무 센스라는 게 없어요..ㅜit에 적성이라는 게 존재할까요?사실 학원 다닌 후부터 너무 어렵고 힘이 들었는데, 너무 느린 자신이 너무 견디기 힘듭니다 ㅜ적성이라는 건 존재하는 거라서 제가 힘든건지 고민이 됩니다.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
lab12 를 진행하며 질문이 있습니다!
안녕하세요 맛비님. Lab12 를 강의를 듣고, 혼자서 코드를 수정하며 진행중에 있는데 몇가지 질문이 있습니다! (코드 질문은 아닙니다ㅎㅎ) 해당 lab 의 목적은 AXI4-Lite 인터페이스를 이용해서 레지스터에 접근하고, 레지스터의 내용을 통해 BRAM 에 access 하는 과정으로 알고 있습니다.그렇다면 설계하신 myip_v1_0_S00_AXI 모듈 외부에서 AXI4-Lite 를 이용해 0x08 혹은 0x0C 레지스터에 접근하고 해당 레지스터의 output 을 이용해 BRAM 으로 접근하는것이 맞는 동작이 아닐까 싶어서요!AXI4-Lite -> Register -> BRAM 으로 이루어져야 할 것 같은데 현재는 AXI4-Lite ->Register, BRAM 동시접근 형태로 되어 있는 것 같아서 여쭤보고 싶습니다. (예전에 들었을 때 모듈 외부에서 들어오는 신호들은 F/F 으로 한번 latch 해서 사용하는게 타이밍적으로 안전하다... 라는 말도 들었던 것 같아서 그렇습니다...ㅎㅎ)R 채널의 rresp 는 따로 delay 를 주지는 않으신 것으로 봤는데... 현재 코드상에서는 모두 OKAY 를 주기 때문에 따로 문제될 것 같지는 않지만 delay 를 주는게 맞겠죠...?R 채널을 통해 Read 를 수행하실 때 0x0C 에 접근하여 BRAM 내부 데이터를 읽어오는 부분 때문에 무조건적으로 rvalid 에 1cycle delay 를 주신 것을 확인하였습니다. 그런데 만약 0x08 번지같이 BRAM 에 access 하지 않는 address 를 읽어온다면 굳이 rvalid 에 1cycle delay 를 줄 필요가 없겠죠? 해당 부분은 BRAM access 하는 address 이거나, 아닌 케이스로 나누어서 따로 rvalid 를 assign 하면 될까요?
-
미해결
MyBatis 쿼리 속도가 너무 느립니다.
이클립스 Maven으로 프로젝트를 만들어서 백엔드를 만들고 있습니다.버전은 아래와 같습니다. Java 17.0.7Spring Boot 2.2.2 Releasemybatis-spring-boot-starter 2.1.0PostgreSQL 13(Max-Connection: 1,000) 모놀리식 애플리케이션으로 배포되며, 서비스 특성 상 매 초마다 50개 이상의 insert 쿼리 및 처리 로직이 실행되고 있습니다. 조회하려는 테이블엔 10,000개 이상의 데이터가 쌓여 있습니다. 검색해보니 fetchSize를 설정하면 속도가 빨라진다 하여 mapper xml <select> 부분에 fetchSize="1000"을 추가해도 결과는 같았고, 위에서 언급한 insert 및 처리 로직을 끄고 쿼리를 실행하면 정상적으로 빠르게 실행되었습니다. 이런 경우엔 어떻게 해야 쿼리 속도를 빠르게 할 수 있나요?도저히 관련 자료를 찾을 수 없어서 질문드립니다ㅠ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
의사코드 질문입니다.
while 루프 내부에서 expected = false 를 굳이 왜 해야하는 질문이 들었는데요.의사코드를 보면 else 구문에서 expected = locked에 때문에 한다고 말씀해주셨는데결국 if문에서 _locked=true일 때 조건을 만족하는 경우가 생겨서 그런건가요? false로 조건을 통과해야되는 데 말이죠. (잠겼는데 통과하는 경우가 발생) 그렇다면 의사코드에서 else 구문에서 expected = _locked을 왜하는지 의문이 드는데, "그냥 칩회사에서 그렇게 구현했다." 라고 받아들이면 되는건가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 연장 신청입니다!
남은 기간 내에 완강이 힘들 것 같아서 수강 기간을 연장해주시면 감사하겠습니다.
-
미해결처음 만난 리액트(React)
(실습) JSX 코드 작성해보기
이 화면이 나오게 하고 싶습니다. npm start 엔터 이후로 어떻게 해야 하는지 모르겠습니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
Object is not iterable
npm run dev를 하면 Object is not iterabled 이런 에러가 뜹니다제 코드는import React, { useState, useCallback } from "react"; import { Button, Form, Input } from "antd"; import Link from "next/link"; import styled from "styled-components"; import useInput from "../hooks/useInput"; const ButtonWrapper = styled.div` margin-top: 10px; `; const FormWrapper = styled(Form)` padding: 10px; `; const LoginForm = ({ setIsLoggedIn }) => { const [id, onChangeId] = useInput(""); const [password, setPassword] = useInput(""); const onSubmitForm = useCallback(() => { console.log(id, password); setIsLoggedIn(true); }, []); return ( <FormWrapper onFinish={onSubmitForm}> <div> <label htmlFor="user-id">아이디</label> <br /> <Input name="user-id" value={id} onChange={onChangeId} required /> </div> <div> <label htmlFor="user-id">비밀번호</label> <br /> <Input name="user-id" value={password} onChange={onChangePassword} required /> </div> <ButtonWrapper> <Button type="primary" htmlType="submit" loading={false}> 로그인 </Button> <Link href="/signup"> <a> <Button>회원가입</Button> </a> </Link> </ButtonWrapper> </FormWrapper> ); }; export default LoginForm; 이 부분이 문제라곤 하는데 어떻게 하나요?
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
루키스님 바쁘시겠지만 혹시 한 번만 봐주실 수 있나요?
선생님 강의를 듣고 교육용 프로그램을 만들게 되었습니다.상업용으로 사용할 것은 아니고 일반 학생들과 강의 때 하려고 몇달 간 만들었는데유니티에서는 작동에 전혀 문제가 없다가 apk로 빌드하여 모바일 환경에서 실행하니첫화면에서 버튼 클릭이 되지 않습니다.public override bool Init() 이 전혀 작동하지 않는 듯하고 UI팝업 관련 된 것들도 모두작동이 안 됩니다.정말 바쁘시겠지만 확인 혹은 확인하시지 않더라도 간단한 조언 부탁드려도 될까요
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요! @Nullable 관련해서 질문이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이번 강의에서 플랫폼 타입으로 인해 Java 와 Kotlin 간에 발생할 수 있는 문제점을 설명해주셨는데요.특히, 아래의 코드를 테스트할 때 null 때문에 발생할 수 있는 문제점과 해결할 수 있는 방법을 설명해주셨습니다.assertThat(results[0].age).isNull()Java 클래스의 getter에 @Nullable을 붙여줌으로써 해결할 수 있었는데요.제가 궁금한 것은 롬복의 @Getter가 클래스 레벨에서 적용된 경우에는 어떻게 @Nullable을 붙여줄 수 있느냐가 궁금했습니다.코틀린으로 변환 과정에서 롬복의 @Getter가 만들어주는 게터들을 모두 하드 코딩으로 작성하고 나서 @Nullable 어노테이션을 해당하는 게터에 달아줘야하는건지, 아니면 더 좋은 방법이 있는지 궁금합니다!모든 클래스가 그렇지는 않겠지만 아무래도 기존에 사용하고 있던 자바 클래스 코드들에 @Getter 어노테이션이 달려 있을 것이라고 예상이 되고 이 경우에는 어떻게 테스트 해당 문제를 해결해야하는지 궁금하네요더불어 좋은 강의 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트 생성 후 JpashopApplicationTests 파일 어노테이션
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영한님의 강의에 보면 처음 제공되는 테스트 클래스에 @RunWith(SpringRunner.class) 라는 어노테이션이 붙어 있는데요 제가 스프링부트 2.7, 자바 11 버전으로 생성한 프로젝트입니다. 찾아보니 junit5부터는 @Runwith(SpringRun.class)가 @ExtendWith(SpringExtension.class)로 바뀌었다고 하는데, 제가 생성한 프로젝트에는 아예 어노테이션이 없어서 이유가 뭔지, 어떤 차이가 있는지 궁금합니다.
-
미해결처음 만난 리액트(React)
섹션 2 create-react-app
npx create-react-app my-app이라고 작성했는데 오류가 나타납니다. node.js와 npm버전은 모두 14.0과 6.14 이상입니다PS C:\Users\이민준> npx create-react-app my-app npm ERR! code ENOENT npm ERR! syscall lstat npm ERR! path C:\Users\이민준\AppData\Roaming\npm npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, lstat 'C:\Users\이민준\AppData\Roaming\npm' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\이민준\AppData\Local\npm-cache\_logs\2023-08-02T12_46_01_759Z-debug-0.log PS C:\Users\이민준>
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
다음 에러나시는 분들 참고하세요: "Error: Can't add new command when connection is in closed state"
제가 아래 순서대로 진행하여 해결했습니다.https://www.npmjs.com/package/typeorm-extension 의 스크립트를 참고하였는가MySQL hosts파일에 ::1이 localhost로 바인딩되어있는 부분을 주석처리하기이게 어려우면 localhost대신 루프백주소를 넣으세요이래도 안되면 에러 코드 다시 읽어보기그래도 안되면 chatGPT한테 물어보기참고로, 강사님이 쓰는 extension이랑 최신버전이랑 사용법이 약간 다른 것 같은데 자세히는 아직 안봤지만 각자 1번은 무조건 확인하십쇼
-
미해결장박사의 블록체인 이해와 구조
안녕하세요 ~ 강의자료 요청 드립니다!
안녕하세요 오늘 수강신청했는데 강의자료 요청 드립니다!!hjopy89@gmail.com 입니다. 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
중고마켓 답변질문입니다.
강사님 안녕하세요,혹시 똑같은사람이 다른 질문을 할 수 있는데여그럼 그때는 어떻게 해당 답변을 판단할 수 있나여?쿼리에서는 판단할수있는게 없는데요.... 이럴때는 어떻게 해야할지 모르겠습니다..useditemQuestion._id 는 질문한 사람이 같기때문에 판단할수없고요... 그리고 useditemQuestionId는 어떤걸로 잡아야하나요 해당 detail 페이지의 상품을 id로 잡아야하나요? 아니면 판매자의 id를 잡아야하나요?
-
미해결
flutter doctor Android toolchain 오류
안녕하세요! 찾아본 여러 가지 방법들로도 해결하지 못하여 혹시 도움을 받을 수 있을까하여 글을 씁니다.flutter_console.bat에 flutter doctor 명령어 입력 시 사진과 같이 Android toolchain 오류가 발생합니다.Android Studio는 android-studio-2022.3.1.18-windows로 설치한 상태입니다.SDK Manager-SDK Tools에서 Android SDK Command-line Tools (latest) 설치했고, Android SDK Tools (Obsolete)도 설치했습니다.이 둘을 삭제했다가 다시 설치해도 변화가 없습니다.C:\Program Files\Android\Android Studio\jbr에 있는 항목을 전체 선택하여 jre 폴더에 붙여넣기도 해봤지만 여전히 오류가 나옵니다. flutter doctor --android-licenses 명령어를 입력해도 오류가 나옵니다.환경 변수에서 Path에 flutter\bin 위치도 추가했습니다.Android Studio와 flutter를 삭제하고 다시 설치해도 오류가 계속됩니다.혹시 이 오류를 해결하는 방법을 아시는 분이 계실까요? 혹시 알고 계신다면 제가 여쭤봐도 되겠습니까? 부탁 드립니다.