inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

ItemRepository 인터페이스 생성 이유??

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] ItemRepository 인터페이스 생성한 이유가 궁금해서 질문드립니다. 강의에서 해당 인터페이스를 생성하는 이유가 영한님이 알려주신 강의에서는 jdbctemplate, mybatis, jpa등등 데이터 접근 기술들을 알려주셔서 해당 구현체들을 추상화 목적으로 만드신건가요?? 아니면 현업에서는 일반적으로 영한님처럼 파일 구조로 만드나요??

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
댓글 1 좋아요 0 조회수 159

머신러닝 질문

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 선생님, 여쭤볼께 있어 글남깁니다 ~! 만약 2회차 회귀 문제라 가정하면 만약 데이터프레임이 x1 x2 x3 ~~~~ y 값이 있을 때, 만약 target으로 하는 y가 있다 ! 라고 했을 때 거기에 대한 x1, x2, x3가 ~~범위에 들어와야 target하는 y값에 가깝다 ! 라는 코딩도 있나요 ? 어떻게 보면 회귀분석인거같은데. .ㅠ 배운건 x1 x2 x3가 있을떄 y가 나오는거까지 밖에 안배워서 궁금하네용

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
kyb1053 댓글 1 좋아요 0 조회수 100

2024년 2회 17번 재귀함수

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

재귀 함수로 계속 돌면 Char c = a 만 남고 if(idx <0) return""; 으로 빠져나오는거 아닌가요?ㅠ idx : 0, c: a,seen[a]:false idx : 1, c: b,seen[b]:false 어떻게 나오는지 모르겠습니다.

  • python
  • java
  • c
  • 정보처리기사
2828won 댓글 1 좋아요 0 조회수 145

윈도우 빌드 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 자바 버전 17이상을 사용하는데 빌드가 안됩니다.

  • java
  • spring
  • mvc
  • spring-boot
썩은도토리 댓글 1 좋아요 0 조회수 358

로그아웃 시 메서드 거절이 발생합니다.

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

auth LoginView/LogoutView에 success_url_allowed_hosts 설정 추가하여, 로그인/로그아웃 후에 지정 호스트로의 이동 허용 현재 로그인/로그아웃후 지정 호스트로 이동을 허용하는 부분을 실습하고 있는데 막히는부분이 있어서 질문 드립니다. 이부분 코드를 붙여넣고 실행하였더니 로그아웃 부분에서 아래와 같은 에러가 발생하였습니다. (프로필 페이지로 이동은 잘 됩니다.) 찾아보니 GET 메서드가 거절된 것같은데, 이전 강의에서 장고에서 과거에는 GET으로 받았으나, 이제는 POST 요청만 허용한다는 내용을 들은적이 있었던것같은데, 그것과 관련된 것인지 궁금합니다. 다른 분들은 잘되셔서 넘어가셨을텐데, 저가 잘못된것 같긴한데 혹시나해서 여쭈어봅니다. 아래는 로그아웃 구현된 부분입니다.

  • react
  • python
  • django
  • web-api
  • htmx
백종성 댓글 2 좋아요 0 조회수 147

11-15) 프로필 수정에서 이미지 저장 시 문제

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 11-15 강의에서 구현한 프로필 수정 폼에서 이미지를 올린 경우, 다시 프로필 수정 페이지에 들어가면 정상적으로 이전에 등록된 이미지가 현재 란에 보여집니다. 이렇게 구현된 모델은 문제가 몇 가지 있는데요. 수정하지 않고 저장 을 누를 경우 이전 강의에서 교육하신 내용처럼 접미사가 계속 바뀌어가면서 같은 내용의 파일이 spamming 되는 문제가 발생합니다. 우리가 만약 프로필에 다른 항목이 추가된다면, 다른 항목만 수정하지 않고 나가는 유저가 있을텐데 해당 문제를 해결하려면 어떻게 해야할까요? 수정 혹은 취소 체크 박스를 선택하여 삭제를 할 경우 여전히 경로 안에 파일이 남아 있습니다. signal을 이용하면 될 것 같은데, 하기와 같은 방법을 생각해 볼 수 있을까요? @receiver(pre_save, sender=Profile) def edit_delete_on_profile(instance=Profile, **kwargs): instance.avatar.delete(save=False) 수업 내용과는 상관없지만, 기본 제공되는 이미지 업로드 양식이 어색합니다. 특히 취소 체크 박스를 체크하여 제거하는 방식은 너무 어색한데요. 더 좋은게 없을까요? 예를들어 아래는 네이버 '치지직' 에서 프로필 수정 양식입니다.

  • react
  • python
  • django
  • web-api
  • htmx
pplkjh2 댓글 3 좋아요 0 조회수 242

노션 링크 공유를 못 받았습니다

해결됨

코딩테스트 [ ALL IN ONE ]

vvoohhee@gmail.com 위의 메일 주소로 2번이나 신청했는데 노션을 공유 받지 못했습니다. 노션에 로그인 되어있는 이메일도 위의 이메일과 같은데 한 번 확인 부탁드립니다...

  • python
  • 코딩-테스트
  • 알고리즘
  • 노션
vvoohhee 댓글 1 좋아요 1 조회수 174

게시물 필터 기능 구현

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

타임리프와 스프링으로 게시판을 만들어보고 있는데 한 가지 질문을 좀 드리게 되었습니다. 필터와 인터셉터 관련 부분을 수강 후 게시판 혐오글 작성 방지 기능을 구현해보고자 하는데요. 인터셉터가 요청을 가로채 인터셉터의 prehandle 에서 혐오글 포함 시 인터셉터가 호출이 되면서 컨트롤러가 호출되지 않도록 하는 부분까진 이해가 됐습니다만 현재 SSR 방식의 타임리프를 사용하고 있어 게시물 생성 부분은 @RestController 어노테이션을 사용해 자바스크립트의 fetch() 함수로 API를 호출하고 있습니다. 그러면 아무리 인터셉터에서 컨트롤러를 호출시키지 않는다고 하더라도 등록된 이벤트에 의해 API를 호출하면 게시글이 생성이 될 수 밖에 없는 상황인데 이 상황에선 어떻게 해결을 해야 되는지 조언을 듣고 싶습니다

  • spring
  • mvc
피곤한개발자 댓글 1 좋아요 0 조회수 163

인텔리제이 자동정렬 문제

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

강의 7분 21초쯤 save.jsp 내용을 따라서 작성하는데 <ul> <li>id=<%=member.getId()%> </li> <li>username=<%=member.getUsername()%> </li> <li>age=<%=member.getAge()%> </li> </ul> 계속 이런식으로 닫는 태그가 자동으로 밑으로 가버리더라구요. 구글링 해봐도 잘 못 찾겠어서 질문드립니다 ㅠ 다시 위로 올려놔도 다른 작업할 때 다시 저렇게 변해버리네요 강의처럼 뒤에 딱 붙게 해서 보고싶은데 혹시 설정 방법이 따로 있을까요?

  • spring
  • mvc
맥스 댓글 1 좋아요 0 조회수 329

SSLError

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. requests.get 에서 SSL Error가 나면 어떻게 해야할까요 ? verify=False 옵션을 줘도 안되네요 ㅜ

  • python
  • 웹-크롤링
김주호 댓글 2 좋아요 0 조회수 130

SSHOperator, BashOperator차이

미해결

Airflow 마스터 클래스

강의에서는 BashOperator을 이용해서 DAG를 만들었는데, 제 실무에서는 SSHOperator을 사용하더라구요. 어떤 차이가 있는지 궁금합니다.

  • python
  • 데이터-엔지니어링
  • airflow
카롱 댓글 2 좋아요 0 조회수 321

색션2 강의 재생 문제

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요. 섹션2 강의 재생이 안됩니다. 섹션1 강의는 제대로 재생되어 테스트도 해보았는데 섹션2 강의가 재생이 안되네요. 확인 부탁드려요

  • python
  • 머신러닝
  • 통계
Mango 댓글 1 좋아요 0 조회수 101

그래프큐엘 패치보드 질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

포트폴리오 과제중 BoardDetail 작성글 페이지에서 패치보드가 안불러와져서 계속 코드 고쳐보다가 결국 강사님이 올려주시는 포트폴리오리뷰 파일 불러와서 코드보고 똑같이 따라쳐도 제 파일에서만 패치보드가 안불러와져서 오류가 계속나네요.. 혹시 좀 봐주실수 있을까요?(_app.js에서 아폴로 주소 확인도 했습니다) 아래는 패치보드 로드 실패로 나오는 창입니다

  • react
  • node.js
  • seo
  • graphql
  • next.js
cyh1908 댓글 1 좋아요 0 조회수 157

fetch 함수에 searchParams.toString() 사용 관련

미해결

Next + React Query로 SNS 서비스 만들기

export const getSearchResult : QueryFunction<Post[], [_1 : string, _2 : string, searchParams : {q : string, pf? : string, f? : string> = async ({queryKey}) =>{ const res = await fetch(` http://localhost:9090/api/search/$ {searchParams.toString()? ${searchParams.toString()}` 여기서 searchParams는 객체 타입인데 toString() 처리가 가능한지 궁금합니다.

  • react
  • next.js
  • react-query
  • next-auth
  • msw
그린티라떼 댓글 1 좋아요 0 조회수 188

2.1 프로젝트 설치 alias 부분

해결됨

한 입 크기로 잘라먹는 Next.js

이 부분 진행할 때 "default alias를 쓸 거냐? No" 라고 말씀해 주셨는데 반대로 말씀해 주신 거 같아요! default alias를 쓴다는 선택이니까요. default import alias 대신 custmize으로 쓰겠냐는 질문에 No라고 선택한 걸로 보입니다!

  • react
  • typescript
  • next.js
주니어에요 댓글 2 좋아요 0 조회수 290

webbrowser 질문

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

webbrowser.open (" http://google.com") 코드를 실행하면 크롬창이 떴다가, 바로 꺼집니다. 왜 그런걸까요?? 해당 코드 뒤에 time.sleep() 을 넣어도 인자로 넣은 시간 동안만 크롬창이 떠있고 다시 꺼지네요

  • python
jbw217 댓글 1 좋아요 0 조회수 92

댓글 비밀번호 입력 오류

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

안녕하세요, 댓글 삭제 기능을 구현하던 도중 Modal에서 입력받은 비밀번호가 제가 댓글을 생성할 때 입력했던 비밀번호와 동일함에도 비밀번호가 틀렸다는 에러 메시지가 나옵니다. 제가 작성한 코드에서 어떠한 오류가 있는 건지 가르쳐주시면 감사하겠습니다... BoardComment Container import { useState } from "react"; import { useRouter } from "next/router"; import { useMutation, useQuery } from "@apollo/client"; import BoardCommentsUI from "./BoardComments.presenter"; import { FETCH_BOARD, CREATE_BOARD_COMMENT, FETCH_BOARD_COMMENTS, DELETE_BOARD_COMMENT, } from "./BoardComments.queries"; import { MouseEvent, ChangeEvent, MouseEventHandler } from "react"; import { IMutation, IMutationCreateBoardCommentArgs, IMutationDeleteBoardCommentArgs, IQuery, IQueryFetchBoardArgs, IQueryFetchBoardCommentsArgs, } from "../../../../commons/types/generated/types"; export default function BoardComments() { const [writer, setWriter] = useState(""); const [password, setPassword] = useState(""); const [contents, setContents] = useState(""); const [rating, setRating] = useState(0); const [user, setUser] = useState(""); const [boardCommentId, setBoardCommentId] = useState(""); const [modalPassword, setModalPassword] = useState(""); const [contentLength, setContentLength] = useState(0); const [isOpen, setIsOpen] = useState(false); const router = useRouter(); if (typeof router.query.boardId !== "string") { router.query.boardId = Array.isArray(router.query.boardId) ? router.query.boardId[0] : String(router.query.boardId); } const { data } = useQuery<Pick<IQuery, "fetchBoard">, IQueryFetchBoardArgs>( FETCH_BOARD, { variables: { boardId: router.query.boardId, }, } ); const { data: commentData, refetch } = useQuery< Pick<IQuery, "fetchBoardComments">, IQueryFetchBoardCommentsArgs >(FETCH_BOARD_COMMENTS, { variables: { boardId: router.query.boardId, }, }); const [createBoardComment] = useMutation< Pick<IMutation, "createBoardComment">, IMutationCreateBoardCommentArgs >(CREATE_BOARD_COMMENT); const [deleteBoardComment] = useMutation< Pick<IMutation, "deleteBoardComment">, IMutationDeleteBoardCommentArgs >(DELETE_BOARD_COMMENT); const onChangeWriter = (event: ChangeEvent<HTMLInputElement>) => { setWriter(event.target.value); }; const onChangePassword = (event: ChangeEvent<HTMLInputElement>) => { setPassword(event.target.value); }; const onChangeContents = (event: ChangeEvent<HTMLTextAreaElement>) => { setContents(event.target.value); setContentLength(event.target.value.length); }; const onChangeRating = (value: number) => { setRating(value); }; const onChangeUser = (event: ChangeEvent<HTMLInputElement>) => { setUser(event.target.value); }; const onChangeModalPassword = (event: ChangeEvent<HTMLInputElement>) => { setModalPassword(event.target.value); }; const showModal = (event: MouseEvent<HTMLImageElement>): void => { setBoardCommentId(event.currentTarget.id); setIsOpen(true); console.log(boardCommentId); }; const handelOk = (): void => { setIsOpen(false); }; const handelCancel = (): void => { setIsOpen(false); }; const onClickSubmitComment: MouseEventHandler< HTMLButtonElement > = async () => { try { if (typeof router.query.boardId !== "string") { return; } await createBoardComment({ variables: { boardId: router.query.boardId, createBoardCommentInput: { writer, password, contents, rating, }, }, }); refetch(); } catch (error) { console.log(error.message); } setRating(0); setWriter(""); setPassword(""); setContents(""); }; const onClickDeleteComment = async ( event: MouseEvent<HTMLButtonElement> ): Promise<void> => { try { await deleteBoardComment({ variables: { boardCommentId, password: modalPassword, }, }); refetch(); } catch (error) { alert(error.message); } setIsOpen(false); setModalPassword(""); }; return ( <BoardCommentsUI data={data} commentData={commentData} writer={writer} password={password} contents={contents} modalPassword={modalPassword} contentLength={contentLength} rating={rating} user={user} isOpen={isOpen} onChangeWriter={onChangeWriter} onChangePassword={onChangePassword} onChangeRating={onChangeRating} onChangeContents={onChangeContents} onChangeUser={onChangeUser} onChangeModalPassword={onChangeModalPassword} onClickSubmitComment={onClickSubmitComment} onClickDeleteComment={onClickDeleteComment} showModal={showModal} handelOk={handelOk} handelCancel={handelCancel} /> ); } BoardComment Presenter import * as S from "./BoardComments.styles"; import { IBoardCommentsUIProps } from "./BoardComments.types"; import { Rate } from "antd"; export default function BoardCommentsUI(props: IBoardCommentsUIProps) { return ( <S.Container> <S.PasswordCheck open={props.isOpen} onOk={props.onClickDeleteComment} onCancel={props.handelCancel} > 비밀번호 입력:{" "} <input type="text" onChange={props.onChangeModalPassword} /> </S.PasswordCheck> <S.CommentTitleWrapper> <S.CommentIcon src="/icon/rate_review.png" /> 댓글 </S.CommentTitleWrapper> <S.CommentInputWrapper> <S.CommentInputWrapperHeader> <S.CommentWriter type="text" placeholder="작성자" onChange={props.onChangeWriter} value={props.writer} /> <S.CommentPassword type="password" placeholder="비밀번호" onChange={props.onChangePassword} value={props.password} /> <Rate onChange={props.onChangeRating} value={props.rating} /> </S.CommentInputWrapperHeader> <S.CommentInputWrapperBody> <S.CommentInputWrapperBottom placeholder="개인정보를 공유 및 요청하거나, 명예 훼손, 무단 광고, 불법 정보 유포시 모니터링 후 삭제될 수 있으며, 이에 대한 민형사상 책임은 게시자에게 있습니다." onChange={props.onChangeContents} maxLength={99} value={props.contents} /> <S.CommentTextCount>{props.contentLength}/100</S.CommentTextCount> <S.CommentSubmitButton onClick={props.onClickSubmitComment}> 등록하기 </S.CommentSubmitButton> </S.CommentInputWrapperBody> </S.CommentInputWrapper> <S.CommentListWrapper> {props.commentData?.fetchBoardComments.map((el) => ( <S.CommentListItemWrapper key={el._id}> <S.CommentListProfileWrapper> <S.CommentListProfileImage src="/icon/profile.png" /> </S.CommentListProfileWrapper> <S.CommentListContentsWrapper> <S.CommentListContentsHeader> <S.CommentListWriter>{el.writer}</S.CommentListWriter> <Rate disabled defaultValue={el.rating} /> </S.CommentListContentsHeader> <S.CommentListContents>{el.contents}</S.CommentListContents> <S.CommentListDate>2024-07-27</S.CommentListDate> </S.CommentListContentsWrapper> <S.CommentListItemButtonWrapper> <S.CommentListItemButton src="/icon/mode.png" //onClick={() => props.onClickDeleteComment(el._id)} /> <S.CommentListItemButton src="/icon/clear.png" //onClick={() => props.onClickDeleteComment(el._id)} id={el._id} onClick={props.showModal} /> </S.CommentListItemButtonWrapper> </S.CommentListItemWrapper> ))} </S.CommentListWrapper> </S.Container> ); }

  • react
  • node.js
  • seo
  • graphql
  • next.js
Levi 댓글 2 좋아요 0 조회수 188

이번 강의 내용이 좀 많이 어렵네요..

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

이번 강의부분이 이해도가 너무 부족한거 같아서 두번정도 돌려들었는데도 통 이해가 안갑니다.. 우선 9분에 순서를 보자면 main의 start를 먼저 출력하고 ElectricCar의 생성자(이부분을 c에선 함수라고 했던가요..?)를 불러오고 extends의 car를 불러온 후 Car Created를 출력 ElectricCar의 Electric Car created를 출력 . . . End 이렇게 순서가 되나요?... 또한 startEngine는 왜 부모고 chargeBattery는 왜 자식인지 이 부분도 통 이해가 안가구요.. 또한 메서드는 이름이 같고 생성자는 이름이 다르다는 건 알겠습니다. 그 외 기능적으로는 차이가 없는건가요? 이전 강의의 if나 for문 같은경우엔 정말 쉽게 이해하면서 넘어갔는데 상속부분 들어오면서 이해도가 확 떨어져버리네요..

  • python
  • java
  • c
  • 정보처리기사
주서 댓글 2 좋아요 0 조회수 390

이 강의는 Next.js 어떤 버전으로 진행되나요?

해결됨

한 입 크기로 잘라먹는 Next.js

일단 결제하고 미리보기인 첫번째 영상도 봤는데 페이지 라우터 다루다가 앱 라우터로 들어간다는 것까진 확인이 되었습니다. 그래도 버전은 제대로 알고 강의 듣고 싶어서 이렇게 질문 남깁니다!

  • react
  • typescript
  • next.js
HyeJung 댓글 1 좋아요 0 조회수 230

리액트 dockderfile 작성 시 COPY 질문

미해결

따라하며 배우는 리액트 A-Z[19버전 반영]

따라하며 배우는 리액트 A-Z 강의 중 리액트를 위한 도커 파일 작성하기 강의 중 궁금한 것이 있어 질문 드립니다 COPY 부분에 package.json 파일을 복사를 하는데 package-lock.json 파일은 왜 복사를 하지 않나요? package-lock.json 파일이 더 버전 명시가 확실히 되어있어 안전하지 않나요?

  • react
  • redux
  • tdd
  • typescript
  • next.js
  • 소프트웨어-테스트
mun9927 댓글 1 좋아요 0 조회수 162

인기 태그

인프런 TOP Writers

주간 인기글