inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

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

해결됨

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

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

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

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

미해결

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

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

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

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

해결됨

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 조회수 167

첨부파일 삭제

해결됨

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

@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 조회수 104

함수 입력할 때 설명 툴팁 나오게 하려면 어떻게 하나요?

미해결

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

영상에서 randint 입력하실 때 설명 툴팁 노출되는데 어떻게 하나요? 저는 입력하고 마우스를 함수 위에 올려두어야 설명이 나옵니다.

  • python
depv42 댓글 1 좋아요 0 조회수 167

강의보다 바로 여쭤봅니다.

미해결

Microservice 구현 (with EDA,Hexagonal, DDD)

안녕하세요. 강의를 보다가 패키지 구조 패턴이 궁금해졌습니다. 강의에서는 JPA 매핑을 위해 entity 객체를 framework → jpaadapter → entity 패키지 아래에 두어야 한다고 말씀하셨는데, 실제로는 model 에 작업하신 것처럼 보였습니다. 실무에서는 보통 jpaadapter 패키지에 entity 패키지를 따로 만들어서 강의에서 model 에 하셨던 작업을 진행하시는 건가요? 또한 만약 framework → jpaadapter → entity 패키지 구조를 따른다면, domain → model 아래 객체들과의 관계나 역할 구분 그리고 소스 구성은 어떻게 되는지도 궁금합니다.

  • msa
  • ddd
개foot 댓글 2 좋아요 0 조회수 113

글자입력 여러번 실행기

미해결

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

안녕하세요, 18. 글자입력 관련하여 질문 드립니다. 수업에 있는 코드 5줄 (액션 ~ 액션.Execute)를 적고 실행하면 한글 파일이 새로 생성되면서 잘 실행되었습니다. 그렇지만 수업때는 마지막 Execute 라인만 실행하면 같은 작업이 여러번 반복이 된다고 하였는데 Pycharm에서 Alt+Shift+E를 눌러서 저 마지막 Execute 라인만 실행해도 같은 문서에 여러번 글자가 써지는 것이 아니라 새로운 한글 파일이 열리면서 실행이 되었습니다. 수업때 보이는 것처럼 하나의 파일에 글자를 여러 번 입력하려면 어떻게 해야 하나요?

  • python
  • 한컴오피스
이두형 댓글 1 좋아요 0 조회수 110

키움만 가능한가요?

해결됨

(GPT-5) 챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기

키움만 가능한가요? 기존에 한국투자증권을 사용하고 있는데 다를까요?

  • python
  • 인공지능(ai)
  • chatgpt
  • ai-활용-(ax)
우주 댓글 2 좋아요 0 조회수 165

미분 결과가 왜 저렇게 나오는지 궁금합니다.

미해결

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

6:49쯤에, MSBE = (delta_{t+1})^2의 미분 결과가 2*(delta_{t+1})* (\partial(delta_{t+1}}); 합성함수의 미분, 의 형태가 아닌 화면에 나오는 것처럼 미분이 되는지 궁금합니다. 추가로 policy improvement step에서 각 action에 대해서 value가 높은 weight로 parameters을 업데이트 하면서 자동적으로 최적pi를 찾게 된다고 보는 게 맞는 이해일까요?

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

MSA강의 보다 궁금해서 질문드립니다.

미해결

비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)

MSA강의보다 질문드립니다. 제가 쇼핑몰을 만든다고하면. 회원관리 서비스,상품서비스,포인트 서비스,결제서비스,게시판 서비스를 만들었을경우.. 환경설정..이나 유틸 서비스나.. Mybatis연결한다고 가정할경우,, 각 서비스 마다 작성해야하는지.. 별도의 서비스를 만들어 제어를 해야하는지 궁금합니다.

  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • devops
이경용 댓글 2 좋아요 0 조회수 125

GlobalFilter, LoggingFilter가 동작하지 않습니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

server: port: 8000 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apiGateway-service cloud: gateway: server: webflux: default-filters: - name: GlobalFilter args: baseMessage: Spring Cloud Gateway WebFlux Global Filter preLogger: true postLogger: true routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** - id: first-service uri: lb://MY-FIRST-SERVICE predicates: - Path=/first-service/** filters: - AddRequestHeader=f-request, 1st-request-header-by-yaml - AddResponseHeader=f-response, 1st-response-header-from-yaml - name: LoggingFilter args: baseMessage: Spring Cloud Gateway WebFlux Logging Filter preLogger: true postLogger: true 다음처럼 apigateway의 설정파일을 작성하였습니다. 하지만 두 필터가 모두 동작하지 않습니다. 필터 클래스 모두 강의와 동일하게 작성하였고, first-service와 apigateway-service 모두 유레카 서버에 잘 등록되며, api 게이트웨이 또한 동작을 정상적으로 합니다. 혹시 어느 부분에서 잘못되었는 지 알 수 있을까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
백재원 댓글 2 좋아요 0 조회수 112

system 메세지는 정의가 되어 있는 건가요?

미해결

입문자를 위한 LangChain 기초 — v1.0+ 업데이트

안녕하세요. 소스 내용중에 아래와 같은 것이 있습니다. ("system":"이 시스템은 여행 전문가 입니다."), ("user":"{user_input}"), 사용자의 질문이 뭐가 들어올지 모르는 상황에서 여행 전문가라고 지정하는 것이 의미가 있는 것인지요?

  • python
  • llm
  • langchain
  • openai-api
TaeJoon Park 댓글 2 좋아요 0 조회수 84

Kafka Source Connect 버전 에러

해결됨

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하게요 강의를 보고 있는데 Kafka Connect 이 부분이 기존의 zookeeper 에서 kraft 로 버전이 변경되서 지원을 안 하는데 혹시 다른 방법이 있을까 ? 싶어 질문 올립니다. 참고로 블로그 도 여러개 봤는데 계속 에러가 걸려서 질문 올립니다. 정확히 kafka Connect 설치 를 하고 이거를 했을때 C:\Work\confluent-5.5.2>bin\windows\connect-distributed.bat etc\kafka\ connect-distributed.properties Classpath is empty. Please build the project first e.g. by running 'gradlew jarAll' C:\Work\confluent-5.5.2> 윈도우이고 이런 에러가 계속 뜨는데 해결이 안됩니다.

  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
KMC 댓글 2 좋아요 0 조회수 125

설문 제출관련 문의

해결됨

《Do it! LLM을 활용한 AI 에이전트 개발 입문》 완독 챌린지

도서 내용 관련 질문은 Do it! 스터디룸에 남겨주시면 빠르게 확인이 가능합니다. *Do it! 스터디룸: https://cafe.naver.com/doitstudyroom 기타 질문은 이곳에 남겨주세요! 알림 글중에 *챌린지 설문을 제출해 주시지 않은 분들께는 기프티콘 발송이 어렵습니다. 설문을 제출하셨는지 꼭 확인해 주세요! 1주차 미션과제는 제출했는데 설문 제출하는 곳이 별도 있는지요?

  • python
  • 업무-생산성
  • 인공지능(ai)
  • chatgpt
  • ai-활용-(ax)
김성중 댓글 1 좋아요 1 조회수 65

설명하실 때 해상도를 작게 하고 해주세요.

미해결

파이썬과 엑셀로 하는 업무자동화

설명하실 때, 창을 너무 작게 하고 설명해서 전체 창으로 봐도 잘 안보입니다. 설명 뿐만 아니라 이 강의를 보는 사람입장에서도 제작해주시면 좋겠습니다.

  • python
  • excel
cool619 댓글 1 좋아요 0 조회수 79

vscode, 파이썬

해결됨

(GPT-5) 챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기

저 여기까지는 다 됬다고 뜨는데 들어가서 파이썬 버전을 선택할 때는 이거만 뜨는데 어떻게 해야 하나용??

  • python
  • 인공지능(ai)
  • chatgpt
  • ai-활용-(ax)
samsuni680 댓글 4 좋아요 0 조회수 212

혹시 일반적인 방법이 무엇일까요?

해결됨

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

예를 들어 로그인이 되지 않는 경우는 메뉴가 굳이 나올필요가 없어서.. 세션이 미존재면 보이지 않게 처리 했는데.... 이렇게 처리하는 방법이 일반적이지는 않을거 같은데.... 보통 로그인이 되지 않아 메뉴가 필요 없는 페이지는 어떻게 처리하나요? export default async function RootLayout({ children }: Readonly<{ topmenu: React.ReactNode; children: React.ReactNode; }>) { const cookie = (await cookies()).get("session")?.value; const session = await verify(cookie); return ( <html lang="en"> <body className={`${geistSans.variable} ${geistMono.variable} antialiased`} > {/* 세션이 undefined가 아닌 경우 TopNavigationMenu를 렌더링합니다. 'undefined'는 문자열이 아닌 JavaScript의 실제 undefined 값입니다. */} { session!==undefined&&<TopNavigationMenu/> } <main> {children} </main> </body> </html> ); }

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

웹 배포 시에 RN으로 만든 네비게이션은 어떻게 처리하나요?

해결됨

웹 개발자의 연봉을 올려주는 하이브리드앱 with Expo 프레임워크

React Native에서 바텀 네비게이션을 만들었다면, 웹에서는 바텀 네비게이션이 나오게하려면 어떻게 해야하나요?

  • react
  • react-native
  • next.js
  • expo
허광기 댓글 1 좋아요 0 조회수 116

첼린지 문의

해결됨

[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)

현재 바이브코딩 강의를 구입한 사람입니다. 저는 현재 자영업을하면서 향후 웹서비스 창업을염두해서 본강좌를 미리 구입해둔상태이고 학습을 할수있는 상황은아닙니다. 쿠폰보니까 첼린지 쿠폰이 발급되어있던데 이미 강의를 구입한사람일경우 첼린지강의를 신청하면 새로운내용을 더 얻어갈수있는건가요??? 기존강의구입자들은 첼린지를 어떻게 생각해야할지요?

  • react
  • next.js
  • cursor
  • 프롬프트엔지니어링
  • 바이브코딩
doomco 댓글 2 좋아요 0 조회수 99

아래 질문 내용 추가 질문 사항 입니다.

미해결

배달앱은 어떻게 내 주변의 맛집을 찾을까?

안녕하세요 우선 답변 정말 감사드립니다. 일단 말씀 해주신대로 해당 프로젝트에서 set PYTHONUTF8=1 명령어를 입력하고 다시 실행 했지만 계속 동일한 에러가 발생하고 있습니다. poetry shell 해당 명령어도 잘 되는 걸까요? 음... 라이브러리 설치가 안되서.. 강의 진행이 더 이상 안되네요... ChatGPT 도움도 요청 해보았지만 매끄러운 답변은 못 해주고 있어서 어쩔 수 없이 여기로 질문 글 드립니다. 기왕 돈 지불 하고 구입 한 강의 인데.. 여기서 포기 할 수 없습니다.ㅠㅠ 그래도 끝까지 들어야 하지 않나 해서요... 답변 부탁드립니다 ㅠ,ㅠ 참고로 OS 는 윈도우 입니다.

  • python
  • mongodb
  • FastAPI
리나 댓글 1 좋아요 0 조회수 106

인기 태그

인프런 TOP Writers

주간 인기글