묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 전이 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. child 객체가 parent만 연관관계를 가지면 사용가능 하지만, 다른 엔티티와도 연관관계를 가지면 영속성 전이를 사용하지 못한다고 설명하셨습니다. 위 ERD는 제가 지금 프로젝트를 하고 있는 예시인데요동아리마다 게시판이 존재하고, 회원은 여러 동아리에 참여할 수 있습니다. 그래서 각 동아리마다 직위가 다르기 때문에 테이블을 따로 빼서 관리를 해주고 있는데요.그럼 혹시 요 상황에서, 사용자가 가입을 했을 때 가입 테이블에도 자동으로 데이터를 저장하고 싶은데, 동아리 테이블과 연관관계를 가지고 있으므로 영속성 전이를 사용하지 못하는 것일까요? 만약 안된다면, 어떤 방식으로 가입 테이블에 자동으로 추가를 해야할지 조언을 해주실 수 있을까요 ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 자동정렬 문제
강의 7분 21초쯤 save.jsp 내용을 따라서 작성하는데<ul> <li>id=<%=member.getId()%> </li> <li>username=<%=member.getUsername()%> </li> <li>age=<%=member.getAge()%> </li> </ul>계속 이런식으로 닫는 태그가 자동으로 밑으로 가버리더라구요. 구글링 해봐도 잘 못 찾겠어서 질문드립니다 ㅠ 다시 위로 올려놔도 다른 작업할 때 다시 저렇게 변해버리네요 강의처럼 뒤에 딱 붙게 해서 보고싶은데 혹시 설정 방법이 따로 있을까요?
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
구글 신호데이터 사용시 웹사이트 공지 또는 동의 수집 필요성
안녕하세요! 선생님, 강의 정말 잘 듣고 있습니다.수강 중 궁금한 부분이 생겨 문의드립니다! 인구통계 정보를 확인하기 위해 강의해주신 바와 같이[구글 신호데이터 수집] 설정을 진행하였습니다. 근데 아래에 아래와 같은 문구가 있어서 혹시 사이트 사용자에게 정보 수집동의를 받아야 했던 건지, 걱정이 되었습니다.구글 신호 데이터는 구글 로그인/맞춤 광고 동의자에 한하여 수집하는 것으로 알고 있긴 하나, 사이트 등에 해당 정보 수집에 대한 내용을 기재하거나 동의를 받아야하는지 궁금합니다. 추가로, 아래와 같은 기능이 새로 생긴 것 같은데 아래 기능에 관해서도 동일한 맥락으로 설명해주시면 감사하겠습니다. 바쁘시겠지만, 관련하여 답변 주시면 감사하겠습니다!
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
SSLError
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.requests.get 에서 SSL Error가 나면 어떻게 해야할까요 ? verify=False 옵션을 줘도 안되네요 ㅜ
-
미해결Airflow 마스터 클래스
SSHOperator, BashOperator차이
강의에서는 BashOperator을 이용해서 DAG를 만들었는데,제 실무에서는 SSHOperator을 사용하더라구요.어떤 차이가 있는지 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
서비스 (NodePort) 질문 드려요.
안녕하세요. 강의 잘 듣고 있습니다.다름이 아니라 쿠버네티스관련 책을 보니깐 NodePort에서 targetPort 와 nodePort 이외에 그냥 port도 있길래요.. 여기저기 찾아봐도 이해가 잘 안되어서요.. 혹시 그냥 port는 어떤 용도인지 질문 드려도 될까요? apiVersion: v1kind: Servicemetadata: name: nginx-svc labels: app: nginxspec: type: NodePort ports: - port: 8080 nodePort: 31472 targetPort: 80 selector: app: nginx 실습에 문제 발생 시 최대한 캡쳐 화면을 꼭 올려 주세요. (원인 파악에 도움이 큽니다)영상 내용 질문 시 해당 영상 제목과 내용이 있는 시간을 같이 올려주세요. (내용을 다시 들어보고 답변을 드리기 위해서 입니다)긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com)카페 [강의 자료실]에도 많은 질문과 답변들이 있어요!cafe: https://cafe.naver.com/kubeops
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
색션2 강의 재생 문제
안녕하세요. 섹션2 강의 재생이 안됩니다. 섹션1 강의는 제대로 재생되어 테스트도 해보았는데 섹션2 강의가 재생이 안되네요. 확인 부탁드려요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
그래프큐엘 패치보드 질문
포트폴리오 과제중 BoardDetail 작성글 페이지에서 패치보드가 안불러와져서 계속 코드 고쳐보다가결국 강사님이 올려주시는 포트폴리오리뷰 파일 불러와서 코드보고 똑같이 따라쳐도 제 파일에서만 패치보드가 안불러와져서 오류가 계속나네요..혹시 좀 봐주실수 있을까요?(_app.js에서 아폴로 주소 확인도 했습니다)아래는 패치보드 로드 실패로 나오는 창입니다
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
능력컴포넌트와 데이타어셋관련 질문입니다
안녕하세요.덕분에 너무 즐겁게 공부하고있습니다.마지막강의를 공부하려고 내용을 훑어보니, 이부분은 없을거같아 여쭤봅니다.가스에서 능력컴포넌트를 별개클래스로 사용하거나,데이타테이블이나 데이타어셋으로 사용도 권장되는지 알고싶습니다.첨엔 컴포넌트를 빼서,무브먼트나 회전컴포넌트처럼 부착시켜서 사용할줄 알았는데, 멤버클래스로 사용하는 방식인거같아서요. 그리고, 태그가 막강한것같지만, 제가 겪었던 개발팀에선 모두 테이블을 사용했던거같은데, 가스는 대량의 정보다발을 어떻게 받아들여서 사용하나요? 왜냐면, 작은 스케일의 게임에선 숟가락씻으려고 식기세척기 사는거같은 상황일거라,큰 개발팀 대상일건데, 분명 규모있는 데이타처리방식도 있을거같아서요.일부러 어제 다하려다가,아껴두고 오늘 공부하는데, 무척 설렙니다. 강의후반엔 앞으로의 지침도 있기를 기대합니다!
-
해결됨독하게 되새기는 C 프로그래밍
캐너리비트에 관하여 질문
메모리의 주소값이 int자료형이면 4씩 증가하면서 저장될것같은데 캐너리비트를 넣는다면 더 증가하게 될텐데 릴리즈에서는 적용이 안되면 릴리즈모드에서는 스택메모리주소값이 4씩 증가하게 되는건가요? 그럼 디버그모드에서는 1mb만큼의 스택 메모리를 정확히 사용한다고 가정했을때 캐너리비트가 더 차지하게 되므로 오류가 발생하는건가요?64비트에서는 자동변수를 메모리에 저장할때 메모리값이 점점 커지는데 32비트와는 반대인건가요?
-
미해결Next + React Query로 SNS 서비스 만들기
fetch 함수에 searchParams.toString() 사용 관련
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() 처리가 가능한지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
45강 배포후
jar명령어까지 하여 스프링부트를 실행해주었는데 다음과 같은 오류가 뜨고 웹에서도 서버 내부 오류라고 뜹니다. 무엇이 잘못된건지 모르겠네요.https://www.inflearn.com/community/questions/1199055/45%EA%B0%95-dev-%EC%97%B0%EA%B2%B0-%EC%97%90%EB%9F%AC 이거 참고해도 이해가 안가요
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
4.3강의: Bad Request 오류 발생
안녕하세요 4.3 강의를 기준으로 chat.py, llm.py 코드를 완료하여 chat.py 실행 시 위와 같이 bad request 오류가 나오는 데 원인을 모르겠습니다.코드 오류는 아닌거 같은데 원인을 알 수 있을까요???upstage 사용 중이고 pinecone 설정도 4096으로 하였습니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
2.1 프로젝트 설치 alias 부분
이 부분 진행할 때 "default alias를 쓸 거냐? No" 라고 말씀해 주셨는데 반대로 말씀해 주신 거 같아요! default alias를 쓴다는 선택이니까요. default import alias 대신 custmize으로 쓰겠냐는 질문에 No라고 선택한 걸로 보입니다!
-
해결됨모두의 깃 & 깃허브
충돌의 가능성에 대해
이 강의에서 처럼 rebase를 하는것과리베이스 없이 커밋을 하나 더생성하면서 머지 하는것과둘다 충돌은 똑같은 확률로 발생하나요?rebase를 하면 충돌이 더많이발생한다?는 얘기가 있어서요
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
webbrowser 질문
webbrowser.open("http://google.com") 코드를 실행하면 크롬창이 떴다가, 바로 꺼집니다. 왜 그런걸까요?? 해당 코드 뒤에 time.sleep() 을 넣어도 인자로 넣은 시간 동안만 크롬창이 떠있고 다시 꺼지네요
-
미해결실습으로 배우는 핵심 네트워크 기술
standby 그룹을 수정하고 싶다면 어떻게 해야하나요?
FHRP 강의를 듣고 있던 중입니다. HSRP 그룹 설정시 다른 그룹으로 설정했을 때 수정하려면 어떻게 해야하나요? 원래는 standby 20 ip 10.1.20.224 이렇게 설정해야하는데standby 10 ip 10.1.20.224 이렇게 그룹 10으로 묶어버렸어요..ㅠ수정 명령어를 찾는 데 검색해도 잘 안나오더라구요.궁금합니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
댓글 비밀번호 입력 오류
안녕하세요, 댓글 삭제 기능을 구현하던 도중 Modal에서 입력받은 비밀번호가 제가 댓글을 생성할 때 입력했던 비밀번호와 동일함에도 비밀번호가 틀렸다는 에러 메시지가 나옵니다.제가 작성한 코드에서 어떠한 오류가 있는 건지 가르쳐주시면 감사하겠습니다... BoardComment Containerimport { 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 Presenterimport * 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> ); }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다에서 페치 조인시 발생하는 데이터 뻥튀기에 대해 질문 있습니다.
Team이 있고 Member가 있고 이 둘이 일대다 관계라고 하겠습니다.데이터 뻥튀기라는게 감이 잘 안잡힙니다. 일단 페치 조인을 한다는거 자체가 team과 member 데이터가 둘 다 필요해서 페치 조인을 사용한다고 생각했습니다. 근데 교재 예시중에 아래와 같은 이미지가 있는데요 team 데이터 입장에서는 중복된 데이터일 수 있지만 member 입장에서는 중복된 데이터가 아니지 않나요? 그래서 team을 조회 했을때 필요한 member 데이터들도 조회를 한거니 데이터 뻥튀기가 아니지 않나 라는 생각이 듭니다.
-
미해결
정보처리산업기사 실기 강의는없나요?
개인사정으로 인해기사는 못보고 산업기사필기를 합격하고실기를 지금 1회 떨어지고3회차에 쏟아부으려 하는데,정보처리산업기사 실기 강의가 없네요...추천해줄만한 강의나 사이트있을가요다른 교재 포함 온라인강의는 하나하나 너무 영상이 길어서,.