inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Dockerfile과 커밋방식에 대해 질문 있습니다.

해결됨

개발자를 위한 쉬운 도커

"COPY 빌드컨텍스트경로 레이어경로" 여기서 레이어 경로는 어떻게 구성되어 있는지 알 수 있나요? 강의 내용중에 "커밋 방식을 사용하면 기존 레이어에 새로운 레이어를 한 장 더 추가할 수 있다." 라고 했는데 추가된 새로운 레이어는 읽기 전용 레이어 인가요?

  • docker
  • 가상화
  • ci/cd
  • docker-compose
  • github-actions
  • docker-volume
  • docker-image
  • container
capstonefittrip 댓글 2 좋아요 1 조회수 246

copy-on-write 전략에 대해 추가 질문 있습니다.

해결됨

개발자를 위한 쉬운 도커

안녕하세요 전에 copy-on-write 전략에 대해 질문을 했는데 추가 질문이 있어 질문글을 작성합니다. https://www.inflearn.com/community/questions/1307477/copy-on-write-%EC%A0%84%EB%9E%B5%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 위 질문 글에서 2번 부분에 대해 추가 질문이 있습니다. 읽기/쓰기 레이어에서 index.html 파일을 여러번 수정하는 경우에 대해서 궁금한 부분이 있습니다. 완전 처음에는 얘기 해주신대로 읽기/쓰기는 텅 비어 있는 상태라 읽기 레이어의 index.html 파일을 그대로 복사해 와서 바뀐 부분만 있으면 수정한 후 사용합니다. 여기서 읽기/쓰기 index.html 파일이 한번 더 수정이 되면 읽기 레이어의 index.html 파일을 복사해 와서 기존에 있는 읽기/쓰기 레이어에서의 index.html 파일에서 바뀐 부분만 복사해온 index.html 파일에서 변경한 후 사용하는건가요? 정리하면 읽기/쓰기 index.html 파일을 여러번 수정해도 복사해서 가져오는 부분은 항상 읽기 index.html 파일이고 기존 읽기/쓰기 index.html 파일에서 바뀐 부분을 읽기 레이어에서 가져온 index.html 파일에 넣어서 만드는 건지 궁금합니다.

  • docker
  • 가상화
  • ci/cd
  • docker-compose
  • github-actions
  • docker-volume
  • docker-image
  • container
capstonefittrip 댓글 2 좋아요 1 조회수 181

인스턴스 타겟그룹 등록 언헬시

미해결

AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법

인스턴스 만들때 라우팅 테이블 어떻게 설정 되어 있나요 nat랑 연결되어있나요?

  • aws
  • docker
  • msa
  • container
  • ecs
  • fargate
댓글 2 좋아요 0 조회수 206

강의 섹션2 이후부터 강의화면 안보이는 이슈있습니다.

미해결

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

안녕하세요. 해당 강의 섹션2 이후부터 강의화면이 검은색으로 보여지며 강의화면이 안보이는 이슈가 있습니다. 빠른 확인 부탁드립니다.

  • 네트워크
  • linux
  • docker
채광은 댓글 1 좋아요 0 조회수 208

클라우드 서비스 구축 - AWS 회원가입 및 리눅스 서버 구축 강의화면 안보이는 이슈

미해결

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

안녕하세요. 현재 whale, chrome에서 클라우드 서비스 구축 - AWS 회원가입 및 리눅스 서버 구축 강의화면 안보이는 이슈 가 있습니다. 확인 부탁드립니다.

  • 네트워크
  • linux
  • docker
채광은 댓글 1 좋아요 0 조회수 192

IP Field와 AccessLog 관련

해결됨

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

질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Q1 7-01 02 강의에서 ipv4address custom field를 생성하셨는데요 8-20 강의 같이 이후에는 그냥 Django GenericIPAddressField를 사용셨습니다. 7-01 02강의는 그냥 custom 필드를 보여주기 위한 예시이고 그냥 장고에서 제공해주는 IP 필드를 사용하면 되는건가요? 아니면 차이점이 존재하는 건가요? Q2 제가 제작한 사이트의 사용량 집계를 위해 로그를 얻으려고 합니다. class AccessLog(models.Model): request = models.URLField() time = models.DateTimeField(auto_now=True) user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) ip = models.GenericIPAddressField() 상기와 같은 모델을 작성하여 request가 client로 날라올 때마다 db에 쌓아나가는게 맞을까요? 아니라면 logger를 이용하는게 맞을까요?

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

early_stopping_rounds,eval_metric 오류 관련 질문있습니다.

미해결

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

분류 강의 위스콘신 유방암 예측 실습강의 코드입니다. from xgboost import XGBClassifier xgb_wrapper = XGBClassifier(n_estimators=400, learning_rate=0.05, max_depth=3) evals = [(X_tr, y_tr), (X_val, y_val)] xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds=50, eval_metric="logloss", eval_set=evals, verbose=True) ws50_preds = xgb_wrapper.predict(X_test) ws50_pred_proba = xgb_wrapper.predict_proba(X_test)[:, 1] --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[36], line 5 3 xgb_wrapper = XGBClassifier(n_estimators=400, learning_rate=0.05, max_depth=3) 4 evals = [(X_tr, y_tr), (X_val, y_val)] ----> 5 xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds=50, eval_metric="logloss", 6 eval_set=evals, verbose=True) 8 ws50_preds = xgb_wrapper.predict(X_test) 9 ws50_pred_proba = xgb_wrapper.predict_proba(X_test)[:, 1] File ~\anaconda3\Lib\site-packages\xgboost\core.py:726, in require_keyword_args.<locals>.throw_if.<locals>.inner_f(*args, **kwargs) 724 for k, arg in zip(sig.parameters, args): 725 kwargs[k] = arg --> 726 return func(**kwargs) TypeError: XGBClassifier.fit() got an unexpected keyword argument 'early_stopping_rounds' 위 코드를 입력하였을때 이러한 오류가 뜨는데 무엇이 원인인지 잘모르겠습니다. Xgboost 버전은 2.1.0이고 파이썬버전같은경우는 3.1.1입니다. 아래는 인터넷에 검색하여 찾아낸 방법으로 입력한 코드입니다 from xgboost import XGBClassifier xgb_wrapper=XGBClassifier(n_estimators=400,learning_rate=0.05,max_depth=3,early_stopping_rounds=50,eval_metric="logloss") evals=[(X_tr,y_tr),(X_val,y_val)] xgb_wrapper.fit(X_tr,y_tr, eval_set=evals,verbose=True) ws50_preds=xgb_wrapper.predict(X_test) ws50_pred_proba=xgb_wrapper.predict_proba(X_test)[:,1] 아래는 위 코드에 대한 결과값입니다. 오차 행렬 [[35 2] [ 2 75]] 정확도: 0.9649, 정밀도: 0.9740, 재현율: 0.9740, F1: 0.9740, AUC:0.9961 아래는 책에 있는 코드를 입력하였을때의 결과값입니다. 오차 행렬 [[35 3] [ 2 75]] 정확도: 0.9561, 정밀도: 0.9615, 재현율: 0.9740, F1: 0.9677, AUC:0.9933 제 생각에는 버전차이에 따른 문제같은데 수정된 코드를 사용하였을때 결과값은 도출되지만 기존 강의에서 사용하신 코드의 결과값과는 다릅니다. 수정된 코드를 그대로 사용하는게 맞을지 아니면 다른 방법이 있는지 궁금합니다.

  • python
  • 머신러닝
  • 통계
김정구 댓글 1 좋아요 0 조회수 1478

배열길이 부분에 질문있어요

해결됨

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

8:29초 부분입니다. b=a[:3] 이면 배열주소 0123을 출력하는게 아니라 3까지(012) 라고 봐야하는건가요? c=a[4:6]도 마찬가지로 45까지만 출력하는건가요?

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

djlint 편집시 무한 동작

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

사진과 같이 편집할 때 마다 djlint가 계속 검사합니다ㅠㅠ black은 처음엔 그러다가 자동 저장 설정 변경한 뒤부터 안 그러는데 djlint의 경우는 자동저장을 바꾸고 감시기 설정 체크 모두 해제해도 1바이트의 글자만 입력해도 자동 감시를 시작하는군요ㅠㅠ 혹시 아시는 바가 있을까요... 지피티가 해결을 못 해주어서 1시간이 넘게 고생하는 중입니다ㅠㅠ...

  • python
  • django
KANG HOJUN 댓글 1 좋아요 0 조회수 149

04-02-graphql-mutation

해결됨

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

api 요청하기를 눌러도 콘솔창에 아무것도 안떠요

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

Supabase Storage .emptyFolderPlaceholder 이슈 (슬랙)

해결됨

[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)

https://github.com/supabase/storage/issues/207 모든 파일을 제거했을 때 갑자기 .emptyFolderPlaceholder가 파일 리스트에 나오는 문제입니다. 슬랙에 올라온 질문인데 같은 이슈를 겪는 분들이 종종 계실 것 같아 인프런 커뮤니티에도 해결책을 공유드립니다.

  • firebase
  • next.js
  • tailwind-css
  • react-query
  • supabase
로펀 댓글 1 좋아요 0 조회수 186

react-query 무한스크롤 staleTime caching 질문 (슬랙)

해결됨

[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)

Slack에 올라온 질문이 좋아서 인프런 커뮤니티에도 공유드립니다.

  • firebase
  • next.js
  • tailwind-css
  • react-query
  • supabase
  • staletime
  • cache
로펀 댓글 1 좋아요 1 조회수 177

2장 클론 코딩시 화면 하단에 회색 영역이 생김니다.

미해결

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

강좌와 git을 보면서 했는데, 왜 아래에 회색영역이 생기는 건지 잘 모르겠습니다.ㅜㅜ 세로로 생기는 스크롤도 흰색영역에만 생깁니다. 그런데 로그아웃버튼은 회색영역에 생기네요 이리저리 해봐도 잘 모르겠어서 도움을 요청합니다

  • react
  • next.js
  • react-query
  • next-auth
  • msw
슈퍼아스라다 댓글 1 좋아요 0 조회수 146

역할과 정책에 관한 질문

해결됨

비전공자도 이해할 수 있는 CI/CD 입문·실전

IAM 설정을 처음해보면서 역할과 정책에 대한 개념이 아직 제대로 이해되지 않은거 같아 질문드립니다. '다른 AWS 리소스에 접근하기 위해선 역할이나 사용자를 생성해 그 안에서 정책을 연결해서 권한을 부여해야한다.' 이렇게 이해했는데 맞을까요? ec2에서는 역할을 만들때 정책을 생성했는데 CodeDeploy에서는 정책을 설정하지 않아도 되는 이유가 궁금합니다. EC2 인스턴스는 역할 연결을 통해, github actions는 엑세스 키를 통해 권한을 부여받는다고 이해했는데 맞을까요?

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
yso829612 댓글 1 좋아요 0 조회수 228

서로 다른 컴포넌트간 query 일치하게 하기 강의중

미해결

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

안녕하세여 제로초님 UserInfo에서 팔로우버튼을 누르면 팔로잉으로 변해야되고 다시 한번 누르면 팔로우로 변해야되는데 버튼을 누르고 새로고침을 해야지만 반영이됩니다... 팔로우 추천에서는 바로 반영이 되는데.... 깃허브 ch3-2 UserInfo에 있는 코드로 가져다 써도 안되네여 ㅠㅠ "use client"; import style from "@/app/(afterLogin)/[username]/profile.module.css"; import BackButton from "@/app/(afterLogin)/_component/BackButton"; import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query"; import { User } from "@/model/User"; import { getUser } from "@/app/(afterLogin)/[username]/_lib/getUser"; import cx from "classnames"; import { MouseEventHandler } from "react"; import { Session } from "@auth/core/types"; type Props = { username: string; session: Session | null; }; export default function UserInfo({ username, session }: Props) { const { data: user, error } = useQuery< User, Object, User, [_1: string, _2: string] >({ queryKey: ["users", username], queryFn: getUser, staleTime: 60 * 1000, // fresh -> stale, 5분이라는 기준 gcTime: 300 * 1000, }); const queryClient = useQueryClient(); const follow = useMutation({ mutationFn: (userId: string) => { console.log("follow", userId); return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { credentials: "include", method: "post", } ); }, onMutate(userId: string) { const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); if (index > -1) { console.log(value, userId, index); const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.email as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow: User = { ...value2, Followers: [{ id: session?.user?.email as string }], _count: { ...value2._count, Followers: value2._count?.Followers + 1, }, }; queryClient.setQueryData(["users", userId], shallow); } }, onError(error, userId: string) { console.error(error); const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: shallow[index].Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: value2.Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...value2._count, Followers: value2._count?.Followers - 1, }, }; queryClient.setQueryData(["users", userId], shallow); } } }, }); const unfollow = useMutation({ mutationFn: (userId: string) => { console.log("unfollow", userId); return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { credentials: "include", method: "delete", } ); }, onMutate(userId: string) { const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: shallow[index].Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: value2.Followers.filter( (v) => v.id !== session?.user?.email ), _count: { ...value2._count, Followers: value2._count?.Followers - 1, }, }; queryClient.setQueryData(["users", userId], shallow); } } }, onError(error, userId: string) { console.error(error); const value: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (value) { const index = value.findIndex((v) => v.id === userId); console.log(value, userId, index); if (index > -1) { const shallow = [...value]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.email as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count?.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } } const value2: User | undefined = queryClient.getQueryData([ "users", userId, ]); if (value2) { const shallow = { ...value2, Followers: [{ userId: session?.user?.email as string }], _count: { ...value2._count, Followers: value2._count?.Followers + 1, }, }; queryClient.setQueryData(["users", userId], shallow); } }, }); console.log("error"); console.dir(error); if (error) { return ( <> <div className={style.header}> <BackButton /> <h3 className={style.headerTitle}>프로필</h3> </div> <div className={style.userZone}> <div className={style.userImage}></div> <div className={style.userName}> <div>@{username}</div> </div> </div> <div style={{ height: 100, alignItems: "center", fontSize: 31, fontWeight: "bold", justifyContent: "center", display: "flex", }} > 계정이 존재하지 않음 </div> </> ); } if (!user) { return null; } const followed = user.Followers?.find((v) => v.id === session?.user?.email); console.log(session?.user?.email, followed); const onFollow: MouseEventHandler<HTMLButtonElement> = (e) => { e.stopPropagation(); e.preventDefault(); console.log("follow", followed, user.id); if (followed) { unfollow.mutate(user.id); } else { follow.mutate(user.id); } }; return ( <> <div className={style.header}> <BackButton /> <h3 className={style.headerTitle}>{user.nickname}</h3> </div> <div className={style.userZone}> <div className={style.userRow}> <div className={style.userImage}> <img src={user.image} alt={user.id} /> </div> <div className={style.userName}> <div>{user.nickname}</div> <div>@{user.id}</div> </div> {user.id !== session?.user?.email && ( <button onClick={onFollow} className={cx(style.followButton, followed && style.followed)} > {followed ? "팔로잉" : "팔로우"} </button> )} </div> <div className={style.userFollower}> <div>{user._count.Followers} 팔로워</div> &nbsp; <div>{user._count.Followings} 팔로우 중</div> </div> </div> </> ); } 제가 보기에는 useQuery가 제대로 작동안하는거같은데...제로초님 의견이 궁금합니다 팔로우버튼 안눌렀을때 팔로우버튼 눌렀을때

  • react
  • next.js
  • react-query
  • next-auth
  • msw
장산 댓글 2 좋아요 0 조회수 235

수업 때 쓰셨던 txt file 공유 해주시면 좋겠습니다

해결됨

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

나라 이름, 도시 같은 것들은 영상 아래 강의 노트에서 복붙할 수 있으면 좋겠네요 원활한 답변을 위해, 자세한 질문 사항 부탁드려요 :D

  • python
  • 알고리즘
minsu2587 댓글 1 좋아요 1 조회수 189

도커 이미지 푸시까지는 성공하나, ssh에서 fail이 나옵니다.

해결됨

비전공자도 이해할 수 있는 CI/CD 입문·실전

강의 및 노션에 있는 부분을 최대한 응용해서, next.js app을 생성중입니다. ecr 저장소에서 도커 이미지가 확실히 푸시되었지만, ssh접속에서 에러가 발생했습니다. ======CMD====== docker stop instagram-server || true docker rm instagram-server || true docker pull 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest docker run -d --name instagram-server -p 3000:3000 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest ======END====== err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server/stop": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Delete "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/images/create?fromImage=767398114270.dkr.ecr.ap-northeast-2.amazonaws.com%2Finstagram-server&tag=latest": dial unix /var/run/docker.sock: connect: permission denied 2024/08/13 11:11:21 Process exited with status 1 그래서 workflow를 수정했는데, 밑에 처럼 진행하니 정상처리가 되었습니다. - name: SSH로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # 인스턴스의 퍼블릭 IP 또는 DNS 이름 username: ${{ secrets.EC2_USERNAME }} # 일반적으로 'ubuntu' 또는 'ec2-user' key: ${{ secrets.EC2_PRIVATE_KEY }} # SSH 개인 키 script_stop: true script: | aws ecr get-login-password --region ap-northeast-2 | sudo docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }} sudo docker stop instagram-server || true sudo docker rm instagram-server || true sudo docker pull ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest sudo docker run -d --name instagram-server -p 3000:3000 ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest 혹시 제가 실수하거나 놓친 부분이있을까요??

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
두뇌풀가동 댓글 1 좋아요 0 조회수 233

강의 자료 다운로드 자료요청

미해결

평생 써먹는 데이터 기반 투자법 with 파이썬 퀀트 투자

안녕하세요. 저도 강의자료를 다운로드하면 압축파일에 requirement.txt 파일만 나오고 다른 파일들은 보이지 않습니다. 앞에서 문의한 분처럼 저도 이메일로 보내주시면 감사하겠습니다. kimv100@gmail.com 감사합니다.

  • python
  • pandas
  • 투자
  • 퀀트
김승백 댓글 2 좋아요 0 조회수 235

업캐스팅 강의 마지막 예제 관련 질문입니다.

해결됨

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

내가 나를 낳은 형태에서 예제와 같이 special draw를 호출하면 오류가 나지 않을까요??

  • python
  • java
  • c
  • 정보처리기사
유호영 댓글 2 좋아요 0 조회수 142

인기 태그

인프런 TOP Writers

주간 인기글