inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

수업 교재 링크 문의

해결됨

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

안녕하세요 강사님! 다름이 아니라 업로드 해주신 노션 교재 링크에 들어가면(노트북 사용) 아래 사진과 같이 모든 자료들이 비활성화 되어 교재를 볼 수 없습니다ㅠㅠ 모바일로 접속해야만 교재가 보이는 상황이구요ㅠㅠ 노트북으로 못보니 너무 불편한데 혹시 방법이 있을까요,,?

  • python
  • 코딩-테스트
  • 알고리즘
  • data-structure
찰식빵 댓글 2 좋아요 0 조회수 124

“외부 API” 호출이 실패한 경우 “내 서비스” DB 데이터의 정합성은 어떻게 되나요?

해결됨

백엔드 6주 실전 미션과 1:1 피드백으로 완성하는 합격 포트폴리오

안녕하세요 딩코딩코님! 수업 감사히 듣고있습니다! 아래 코드에서 트랜잭션 범위를 최소화하기 위해 1. 기존 서비스로 이벤트 참가 처리 메서드에만 @Transactional이 붙여져 있습니다. 이미 커밋이 된 상태이기 때문에, 2. 외부 API 호출이 실패해서 RuntimeException 예외를 던져도 “내 서비스”의 DB에는 “참가자 수 증가”와 “참가자 정보 저장”이 된 상태일 것으로 생각되는데, 이 경우, 아래 두가지 옵션 중 선택하는 것이 좋은 방법인지 트랜잭션 범위를 2. 까지 늘린다. 외부 API 호출 실패 시 “참가자 수 감소”, “참가자 정보 삭제” 로직을 추가한다. 아니면, 더 좋은 옵션이 있는지 궁금하여 질문드리게 됐습니다! public class ImprovedEventJoinWithExternalApiUpdateFacade { private static final String TEST_PHONE_NUMBER = "01012341234"; private final EventExternalUpdateService eventJoinService; private final ExternalEventApi externalEventApi; private final ApplicationEventPublisher eventPublisher; public void joinEvent(Long eventId, Long memberId) { // 1. 기존 서비스로 이벤트 참가 처리 EventWithLockParticipant participant = eventJoinService.joinEventWithTransaction(eventId, memberId); // 2. 외부 API 호출 ExternalEventResponse response = externalEventApi.registerParticipant( eventId, memberId, participant.getEvent().getName() ); if (!response.isSuccess()) { throw new RuntimeException("외부 API 호출 실패: " + response.getErrorMessage()); } // 3. 외부 API 응답으로 참가자 정보 업데이트 eventJoinService.updateExternalId(participant, response.getExternalId()); // 4. 이벤트 발행 (트랜잭션 커밋 후 실행됨) eventPublisher.publishEvent(new EventJoinCompletedEvent( eventId, participant.getEvent().getName(), TEST_PHONE_NUMBER )); } }

  • java
  • spring
  • mysql
  • redis
  • 이력서
이길훈 댓글 2 좋아요 0 조회수 208

검증데이터 분리 문의

해결됨

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

작업형2 모의문제1 10:47초 구간 random_stae=2022에서 2022로 설정하는 이유가 무엇인가요?

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

강의 섹션 8: 네드워크 -프로그램 3부분 10:45 오타?

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

교안에서는 p.29 인데 여기서 여러 서버가 접속해도 문제없이 작동하는것을 확인할 수 있다 부분이 헷갈려서요. 여러 클라이언트가 접속해도로 바뀌어야 되는거 아닌가요. 지금 클라이언트 여러대에 서버 한대에 그 서버에서 쓰레드 만들어서 작동하는 걸로 이해했는데 혹시 제가 잘못 이해한걸까요. 감사합니다.

  • java
  • 네트워크
  • 객체지향
swdevelop24 댓글 2 좋아요 0 조회수 121

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

저는 application.yml 파일에서 mysql username 과 password 를 전부 .env 파일에 넣고 $ {} 를 써서 나타냈습니다. 그래서 .env 파일은 깃허브에 올리면 안돼서 배포해도 제대로 안돌아갈것 같아서 그런데. 혹시 강사님께서는 aws 배포하실때 db username, password 와 같은 민감한 정보들은 어떻게 처리하여 배포하시는걸 추천드리나요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
커디널스 댓글 1 좋아요 0 조회수 113

동적페이지 풀라우트 캐시 질문 있습니다.

미해결

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

강의에서 book/4는 동적 페이지인데 첫 접속 후 Full Route Cache에 저장되어 두 번째 접속이 빨라진다고 했습니다. 동적 페이지는 Full Route Cache에 저장되지 않는다고 배웠는데 왜 적용되나요? .next 폴더에 해당 페이지가 남아있는 것을 확인했는데, 이것이 Full Route Cache 적용을 의미하나요? npm run start로 프로덕션 모드에서 테스트했는데 첫 접속과 두 번째 접속 모두 170ms로 동일합니다. 왜 속도 차이가 없나요? import { notFound } from "next/navigation"; import style from "./page.module.css"; import { BookData } from "@/types"; // export const dynamicParams = false; export function generateStaticParams() { return [{ id: "1" }, { id: "2" }, { id: "3" }]; } export default async function Page({ params, }: { params: Promise<{ id: string | string[] }>; }) { const { id } = await params; const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${id}` ); if (!response.ok) { if (response.status === 404) { notFound(); } return <div>오류가 발생했습니다...</div>; } const book: BookData = await response.json(); const { coverImgUrl, title, subTitle, author, publisher, description } = book; return ( <div className={style.container}> <div className={style.cover_img_container} style={{ backgroundImage: `url('${coverImgUrl}')` }} > <img src={coverImgUrl} /> </div> <div className={style.title}>{title}</div> <div className={style.subTitle}>{subTitle}</div> <div className={style.author}> {author} | {publisher} </div> <div className={style.description}>{description}</div> </div> ); } 🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요) 제목을 구체적으로 작성해 주세요 ✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다. ⛔ ️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다. 깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요 직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲 답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 제 답변이 여러분께 도움이 되었는지 저도 알고 싶어요 🥲 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 더 빠른 답변이 가능합니다!

  • react
  • typescript
  • next.js
  • 카카오공채-개발
hinpuo 댓글 2 좋아요 0 조회수 107

members.csv 파일 올리기

미해결

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

작업형1 모의문제1 강의 수강하려고 합니다. 코랩 파일에 members.csv 어떻게 저장하는 건가요?

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

오타?복붙실패

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

InFearLearn 서버 침입 사건: 해커 패턴 추적 작전 작전 수행을 위한 실전 코드부터 살펴보자. 여기코드에서 @Bean @StepScope public MongoCursorItemReader<SecurityLog> securityLogReader( 이 아이템리더쪽 복붙하고 안다듬어서 들여쓰기 밀림

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
qwerty jon 댓글 2 좋아요 1 조회수 94

16:07슬라이드에소 헷갈리는 부분이 있습니다

미해결

강화학습 입문에서 Deep Q-learning/Policy Gradient까지

Policy Network(Q)와 일반적인 Q-learning 문제에서의 behaviour policy(b)가 각자 하는 역할이 비슷한거 같은데, 만약 틀리다면 추가적인 설명을 부탁드려도 될까요? 왜냐하면, '탐험'의 성격?을 각각의 net과 policy가 수행한다고 생각했습니다. 우선 network관점에서는 특정 행동 결정 규칙에 따라 weight를 형성하는데 이때 그리디 action에 대한 value를 추정(max함수)하는 target network에 비해선 '활용'보다는 '탐험'을 하고 있다고 생각합니다 -> 행동 규칙에 따라 transition을 입력으로 받아 weight를 업데이트 하기 때문. 이로 인해 일반적인 Q-learning에서의 b도 max를 출력하는 target policy, pi대신 e-그리디 정책으로 일정 확률 e로 모든 행동을 선택할 수 있는 기믹을 활용하여 '탐험'을 하기 때문에 위와 같은 생각을 하였습니다.

  • python
  • 딥러닝
  • 강화학습
  • pytorch
최규형 댓글 2 좋아요 0 조회수 101

컨슈머 이벤트 중복 처리

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요! 자주 질문드리는데 정성껏 답변해주셔서 감사합니다! 동일한 이벤트가 중복 전송될 가능성이 있기 때문에 article-read 서비스에 이벤트 id를 통한 중복 처리 로직을 추가 하려고합니다. article-read 는 redis를 사용하고 있기 때문에 redis에 이벤트 id를 저장해 해결하려고했습니다. 예를 들어 article-read가 이벤트를 받았을때 redis 에서 이벤트 id 확인 동일한 이벤트 id가 저장돼 있으면 추가 처리 안하고 message ack redis 에서 이벤트 id 확인 동일한 이벤트 저장된게 없으면 서비스 로직 수행 서비스 로직 결과 redis 업데이트 처리 완료한 이벤트 id redis 저장 이런식으로 진행하려 했으나 만약 어떠한 문제로 인해 서비스 로직 결과 redis 업데이트 ( 성공 ) 처리 완료한 이벤트 id redis 저장 ( 실패 ) 하게되면 이벤트 처리는 성공했지만 처리된 이벤트 저장에는 실패해 추후에 중복 처리가 발생할 가능성이 생길 것 같습니다. 이러한 문제 해결을 위해 서비스 로직 결과 redis 업데이트 처리 완료한 이벤트 id redis 저장 두 작업을 하나의 트랜잭션으로 묶어 처리하려고했지만 rdb 와 동작이 다르기 때문에 (롤백 기능 제공 안함 등) 적절한 방법인지 판단이 안서는 상태네요 혹시 article-read에 이벤트 중복 처리를 한다고 하면 어떻게 구현이 가능할지 여쭤보고싶습니다

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
jhkim593 댓글 2 좋아요 0 조회수 75

퀴즈 질문 풀이 오류

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

저는 아무래도 정답이 C 같은데.. 질문에서 /docs 도 포함되어야 한다고 했으므로, 옵셔널 캐치올만이 루트 경로( /docs )까지 모두 처리할 수 있는거 아닌가요? 다 학습하고 혼란이 오네요..

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
Junho 댓글 2 좋아요 0 조회수 119

4-9 낙관적 락, 비관적 락

해결됨

백엔드 6주 실전 미션과 1:1 피드백으로 완성하는 합격 포트폴리오

해당 강의 수강 중 Facade 패턴에 대해 알게 되었습니다 그런데 테스트 코드에만 Facade가 적용되어 있고 Controller에는 바로 서비스 코드를 호출하게 되어 있는데요. 학습용 예시 코드여서 이런 것인지 다른 의도가 있는것인지 궁금합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
goldrex123 댓글 2 좋아요 0 조회수 73

[베개투자법 :자면서 돈버는 AI주식 자동매매머신] 종목을 100개까지 추가 하고자 합니다.

해결됨

베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신

안녕하세요. 강의 잘 들었습니다. 프로그램도 잘 작동합니다. 단지 종목수가 적어 종목을 100개까지 추가하고자 합니다. 어느 부분을 수정해야하는지 문의 드립니다.

  • python
  • 딥러닝
  • 빅데이터
  • FastAPI
  • 데이터-엔지니어링
호빛 댓글 2 좋아요 0 조회수 157

구글 애드 센스 정책 위반을 해결하기 위해선 도데체..

해결됨

비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE

아니 며칠이나 기다렸는데, 웹에 특별히 더 넣을 기능도 없는데, 어떻게 더 고품질로 만들죠...게시글도 15개이상 1000자이상 무조건 넣어야하나요~?ㅜ 정확히 뭐가 어디가 부족하다라고 해주면 좋은데 특별한 고지도 없고.. ,이렇게 웹승인 받기가 힘들면...어떻게 만들으라구..ㅜㅠ 혹시 방법있을까요 샘? 커서는 두리뭉실한 얘기만 해줘서 또 며칠이나 기다려서 실패하면 어떡하나 고민입니다. 그리고 커뮤니티 즉 회원가입,로그아웃 기능에 대해서 조금더 설명이나 관련 링크를 좀 주실수 있을까요?회원가입이나 뭐가 되야 결제시스템도 등록이 가능한데 그런게 없어서 계속 헤매고 있네요...

  • flutter
  • next.js
  • cursor
  • supabase
  • 바이브코딩
화이팅! 댓글 2 좋아요 0 조회수 219

제대로 이해한게 맞나 궁금합니다

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

close() 메서드에서 synchronized와 if(closed){ return; } 조건문을 해준 이유가 해당 세션 종료시 close() 메서드 호출과 서버 종료시 SessionManager의 closeAll()을 통한 close() 메서드 호출이 동시에 되고 중복으로 호출 되는걸 막기 위해서 해준거라고 이해하면 될까요?

  • java
  • 네트워크
  • 객체지향
jkyjong 댓글 1 좋아요 0 조회수 111

셀레니움 PDF자료는 받을 수 있나요

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 내용중에 셀레니움 PDF자료를 보면서 하시던데, 받을 수 있는 곳이 있나요?

  • python
  • 웹-크롤링
Jay Kang 댓글 2 좋아요 0 조회수 128

팔로우 추천 목록이 빈 배열로 들어옵니다.

해결됨

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

안녕하세요. 팔로우 추천 API는 팔로워 수가 많은 순으로 최대 3명을 가져오도록 되어 있는 것으로 알고 있습니다. 현재 발생하는 현상으로는 회원가입한 유저가 없는 경우에 기존 유저에게 추천 목록이 빈 배열로 나타납니다. 그런데 회원가입 후 로그인하면 추천 목록에 로그인한 본인 아이디가 뜨고, 로그아웃 후 기존 유저 A로 로그인하면 이전에 회원가입한 유저 아이디가 추천 목록에 나타납니다. 기존 유저 A가 그 회원가입 한 유저를 팔로우한 상태에서, 다른 기존 유저 B로 로그인하면 A가 팔로우했던 아이디가 추천 목록에서 사라져 있습니다. 팔로우나 언팔로우 기능을 사용할 때 데이터는 정상적으로 들어오는 것으로 확인되고, 팔로워가 있는 아이디가 추천 목록에 나타나야 하는데 빈 배열로 표시됩니다. 어느 부분을 점검해야 문제를 정확히 파악할 수 있을지 감이 잡히지 않아 질문 남겨봅니다..! import { MouseEventHandler } from "react"; import { User } from "@/model/User"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useSession } from "next-auth/react"; type Props = { user: User; }; export default function FollowRecommend({ user }: Props) { const queryClient = useQueryClient(); const { data: session } = useSession(); const followed = !!user.Followers?.find((v) => v.id === session?.user?.id); // 팔로우 const follow = useMutation({ // 호출 시마다 userId를 전달 mutationFn: (userId: string) => { return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { method: "POST", credentials: "include", }, ); }, onMutate: (userId: string) => { const data: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (data) { // 내가 팔로우 하는 대상 // User 배열 중에 팔로우 버튼을 누른 대상의 userId를 찾아서 그 유저의 Followers 수정 const index = data.findIndex((users) => users.id === userId); const shallow = [...data]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.id as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } }, onError: (error, userId: string) => { console.error("팔로우/언팔로우 에러:", error); console.log("실패한 userId:", userId); const data: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (data) { const index = data.findIndex((users) => users.id === userId); const shallow = [...data]; shallow[index] = { ...shallow[index], // 내 아이디가 대상 유저의 팔로워 목록에서 빠져야함 Followers: shallow[index].Followers.filter( (f) => f.id !== (session?.user?.id as string), ), _count: { ...shallow[index]._count, Followers: shallow[index]._count.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } }, }); // 팔로우 끊기 const unfollow = useMutation({ mutationFn: (userId: string) => { return fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users/${userId}/follow`, { method: "DELETE", credentials: "include", }, ); }, onMutate: (userId: string) => { const data: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (data) { const index = data.findIndex((users) => users.id === userId); const shallow = [...data]; shallow[index] = { ...shallow[index], Followers: shallow[index].Followers.filter( (f) => f.id !== (session?.user?.id as string), ), _count: { ...shallow[index]._count, Followers: shallow[index]._count.Followers - 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } }, onError: (error, userId: string) => { const data: User[] | undefined = queryClient.getQueryData([ "users", "followRecommends", ]); if (data) { const index = data.findIndex((users) => users.id === userId); const shallow = [...data]; shallow[index] = { ...shallow[index], Followers: [{ id: session?.user?.id as string }], _count: { ...shallow[index]._count, Followers: shallow[index]._count.Followers + 1, }, }; queryClient.setQueryData(["users", "followRecommends"], shallow); } }, }); const onFollow: MouseEventHandler<HTMLButtonElement> = (e) => { e.stopPropagation(); e.preventDefault(); if (followed) { console.log("언팔로우"); unfollow.mutate(user.id); } else { console.log("팔로우"); follow.mutate(user.id); } };

  • react
  • next.js
  • react-query
  • next-auth
  • msw
개미 댓글 1 좋아요 0 조회수 163

첨부파일 삭제

해결됨

남박사의 파이썬으로 실전 웹사이트 만들기

@blueprint.route("/edit/<idx>", methods=["GET", "POST"]) @login_required def board_edit(idx): board = mongo.db.board try: doc = board.find_one({"_id": ObjectId(idx)}) except Exception: doc = None if not doc: flash("해당 게시물이 존재하지 않습니다.") return redirect(url_for("board.lists")) if str(session.get("id") or "") != str(doc.get("writer_id") or ""): flash("글 수정 권한이 없습니다.") return redirect(url_for("board.lists")) if request.method == "GET": return render_template("edit.html", data=doc, title="글수정") # --- POST --- title = (request.form.get("title") or "").strip() contents = (request.form.get("contents") or "").strip() deleteold = "deleteoldfile" in request.form # ✅ 체크박스 감지 old_file = doc.get("attachfile") filename = old_file f = request.files.get("attachfile") if f and f.filename: base, ext = os.path.splitext(secure_filename(f.filename)) new_name = f"{base}_{int(time.time())}{ext.lower()}" save_dir = app.config["BOARD_ATTACH_FILE_PATH"] os.makedirs(save_dir, exist_ok=True) f.save(os.path.join(save_dir, new_name)) if old_file: board_delete_attach_file(old_file) filename = new_name elif deleteold: if old_file: board_delete_attach_file(old_file) filename = None update_set = {"title": title, "contents": contents} if deleteold and filename is None: board.update_one({"_id": doc["_id"]}, {"$set": update_set, "$unset": {"attachfile": ""}}) else: update_set["attachfile"] = filename board.update_one({"_id": doc["_id"]}, {"$set": update_set}) flash("수정되었습니다.") return redirect(url_for("board.board_view", idx=str(doc["_id"]))) 챗지피티의 도움을 받아 작성했습니다. 근데 삭제 기능만 안되는데 왜 안돼는지 모르겠습니다..

  • python
양성현 댓글 2 좋아요 0 조회수 103

messagerelayconfig클래스에서

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

bootstrapServers의 value값은 어디에 가져오는건가요? yml이나 properties파일은 없는 거 같은데..

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
leettletree 댓글 1 좋아요 0 조회수 54

Circuit Breaker 질문

해결됨

멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]

안녕하세요. circuit breaker 코드를 봤을 때 간략하게 circuit breaker가 이런거다 라고 설명해주셨지만, 추가로 궁금한 점이 있어 질문 드립니다. 만약 인스턴스가 여러개인 상황에서는 로컬 상황만 보는게 아니라 전체 인스턴스 상황을 봐야할 것 같은데 이럴 떄는 circuit breaker를 어떻게 사용해야 하는지 궁금합니다. 감사합니다.

  • java
  • spring
  • kotlin
  • mysql
  • spring-boot
HAHA 댓글 2 좋아요 0 조회수 98

인기 태그

인프런 TOP Writers

주간 인기글