inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

셀레니움 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 조회수 102

강의자료 관련 질문

미해결

[React / VanillaJS] UI 요소 직접 만들기 Part 1

안녕하세요 오늘 강의를 구매했는데, 깃헙클론 부터 초기셋팅 하는법이 어딨는지 몰라서... 혹시 캡처로 첨부드린 내용이 어딨는지 알 수 있을까요?? 감사합니다

  • react
  • typescript
  • dom
  • ui
  • vanilla-js
댓글 2 좋아요 0 조회수 105

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

미해결

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

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

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

글자입력 여러번 실행기

미해결

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

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

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

키움만 가능한가요?

해결됨

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

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

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

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

미해결

강화학습 입문에서 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 조회수 98

filter함수, map함수 등 중괄호를 썼을때의 문제점

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

이런식으로 함수 표시 방식인 ()=>{} 이렇게 사용을 하면 삭제 버튼을 눌렀을 때 모든 리스트가 사라집니다. 또한 앞에서 사용했던 map함수 같은 경우에도 강의와는 다르게 중괄호를 쓰면 문제가 생겼어서 소괄호로 바꿨더니 정상적으로 돌아갔었습니다. 현재 위 함수들에는 중괄호를 쓰면 안되는걸까요?? 참고로 map함수는 한 줄이 아니라 여러줄이었는데도 중괄호를 쓰면 에러, 소괄호를 써야 정상작동했었습니다. 정환님 책에는 별다른 말이 없고 강의에도 별다른 얘기가 없어서 미치겠습니다ㅜㅜㅜㅜㅜ

  • javascript
  • react
  • node.js
  • 카카오공채-개발
gogomini 댓글 2 좋아요 0 조회수 101

투두 수정하기에서 onUpdate함수에 id를 넘겨줄때 왜 이벤트 핸들러로 하는게 아닐까요?

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

onUpdate함수를 TodoItem에도 넣어줘야한다는꺼까지 알겠습니다. input의 onChange일때 onChangeCheckbox를 넣어줘야한다는 것도 알겠습니다. 하지만 왜 onChangeCheckbox 함수 내용이 그냥 onUpdate에 id만 넣어주는걸까요?? 이런식으로 id를 반환해주려면 해당 이벤트가 일어났을때 target의 id를 반환해줘야 하는거 아닐까요???? 왜 e를 매개변수로 넣지도 않고 그냥 id만 넣어도 되는걸까요? 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 8.6 챕터의 5분 20초입니다!

  • javascript
  • react
  • node.js
  • 카카오공채-개발
gogomini 댓글 2 좋아요 0 조회수 79

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

미해결

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

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

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

퀴즈 활성화 안됨

미해결

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

강의를 다 들었는데 섹션4의 퀴즈가 활성화 되지 않아 수료증을 못받고 있습니다 ㅠㅠ 혹시 뭐 빠트렸나 해서 섹션 4번 강의 다시 다 들었는데도 안되네요.. 확인부탁드립니다

  • react
  • react-router
  • redux-toolkit
  • zustand
  • react.js
댓글 2 좋아요 0 조회수 80

styled-components 관련 질문

미해결

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

안녕하세요 css 쪽 학습 중에 있는데, style-component에 작성중인데 강사님의 화면과 다르게 실행은 제대로 되나 아래 화면과 같이 그냥 문자열처럼 갈색 표시가 되는데 그래서 css 문구 추천이 안되는 것 같은데 어떤 문제인가요?

  • react
  • react-router
  • redux-toolkit
  • zustand
  • react.js
유키 댓글 2 좋아요 0 조회수 79

설문 제출관련 문의

해결됨

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

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

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

강의속 PanResponder.create 부분의 코드가 GitHub 코드와 다름

미해결

React Native with Expo: 제로초에게 제대로 배우기

강의 중에는 PanResponder.create에 들어가는 객체의 속성으로 onStartShouldSetPanResponder를 소개하지만, 작동이 안되서 Github 코드를 살펴보니 onMoveShouldSetPanResponder로 해야 함 const panResponderRef = useRef( PanResponder.create({ onStartShouldSetPanResponder: () => true, // Pan 작업에 반응하도록 설정 onPanResponderMove: (event, gestureState) => { ... 수정 후 const panResponderRef = useRef( PanResponder.create({ onMoveShouldSetPanResponder: () => true, // Pan 작업에 반응하도록 설정 onPanResponderMove: (event, gestureState) => { ...

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
jasinis102 댓글 1 좋아요 2 조회수 91

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

미해결

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

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

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

vscode, 파이썬

해결됨

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

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

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

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

해결됨

한 입 크기로 잘라먹는 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 조회수 75

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

해결됨

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

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

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

favicon 변경이 안돼요 ㅠㅠ

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

https://github.com/ksm0584-star/one-bite_react.git 안녕하세요! 초보자도 이해하기 쉽게 잘 설명해주셔서 강의 감사드리며 듣고 있습니다. 처음으로 문제가 생겼는데요 ㅠㅠ index.html에서 favicon으로 변경한 것과 meta 코드를 넣어준 것이 웹에 적용이 되지 않습니다. 분명 저장을 하고 새로고침을 해주어도 개발자 모드로 들어가보면 적용이 하나도 안되어 있어요. 그리고 배포는 되는데 하고 나면 favicon과 meta코드가 초기화 되어 있습니다. 무엇이 문제일까요? 다음 강의에 있는 vercel login도 되지 않습니다. zsh: command not found: vercel 이렇게 뜨네요 ㅠㅠㅠ 답변해주시면 정말 감사하겠습니다!

  • javascript
  • react
  • node.js
  • 카카오공채-개발
김수민 댓글 2 좋아요 0 조회수 88

인기 태그

인프런 TOP Writers

주간 인기글