묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
suggestion에서 onFollowUser을 수행할때 에러 질문입니다!
import React from "react"; import { Button, Avatar } from "antd"; import "./Suggestion.scss"; //프레젠테이션 컴포넌트라 할 수 있다 export default function Suggestion({ suggestionUser, onFollowUser }) { const { username, avatar, is_follow } = suggestionUser; return ( <div className="suggestion"> <div className="avatar"> <Avatar icon={<img src={avatar} alt={`${username}'s avatar`} />} /> {/* <UserAddOutlined /> */} </div> <div className="usesrname">{username}</div> <div className="action"> {is_follow && "팔로잉 중"} {!is_follow && ( <Button size="small" onClick={() => onFollowUser(username)}> Follow </Button> )} </div> </div> ); } import React, { useEffect, useState } from "react"; import "./SuggestionList.scss"; import { Card } from "antd"; import Suggestion from "./Suggestion"; import { useAppContext } from "store"; import Axios from "axios"; import useAxios from "axios-hooks"; export default function SuggestionList({ style }) { const { store: { jwtAccessToken }, } = useAppContext(); const [userList, setUserList] = useState([]); //axios을 좀더 일반적으로 쓰기위한 훅을 이용 useAxios hook //useEffect자체가 필요없다 요청자체를 useAxios가 보내게 되니까? //useAxios는 조회를 할때는 유용한다 post을 할때는 코드가 복잡해진다? const headers = { Authorization: `Bearer ${jwtAccessToken}` }; const [{ data: origUserList, loading, error }, refetch] = useAxios({ url: "http://127.0.0.1:8000/accounts/suggestions/", headers, }); useEffect(() => { if (!origUserList) setUserList([]); else setUserList(origUserList.map((user) => ({ ...user, if_follow: false }))); }, [origUserList]); const onFollowUser = (username) => { console.log("성공"); try { Axios.post( "http://127.0.0.1:8000/accounts/follow/", { username }, { headers } ) .then((response) => { setUserList((prevUserList) => { return prevUserList.map((user) => { if (user.username === username) { return { ...user, is_follow: true }; } else return user; }); }); }) .catch((error) => { console.log(error); }); } catch (error) { console.log("여기 에러야 :", error); } }; return ( <div style={style}> {/* 정말 빠르게 지나갈 것이다 */} {loading && <div>Loading...</div>} {error && <div>로딩중에 에러가 발생했습니다.</div>} {/* <button onClick={() => refetch()}>Reload</button> */} <Card size="small" title="Suggestions for you" // extra={<a href="#">More</a>} style={{ width: 300, }} > {userList.map((suggestionUser) => ( <Suggestion key={suggestionUser.username} suggestionUser={suggestionUser} onFollowUser={onFollowUser} //속성값으로 주입함 /> ))} </Card> </div> ); } 첫번째 블럭이 Suggestion.js이고 두번째 블럭은 SuggestionList.js입니다.follow 버튼을 눌렀을때 이러한 에러가 뜨기 시작했는데 왜 그런걸까요ㅠㅠ 분명 원래는 잘 되었는데 학습진도를 더 나가다 보니 어느순간 작동하지 않던데 그 이유를 잘 모르겠습니다 서버쪽으로 요청도 가지 않는거 같은데 서버쪽의 문제일 수 있을까요??
-
해결됨코딩테스트 [ ALL IN ONE ]
self
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.노드를 구현할때, 함수의 변수안에 self가 있는데 이게 어떤 역할을 하는지 궁금합니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
하이퍼 파라미터 튜닝 범위
안녕하세요! 수업 잘 듣고 있습니다.제가 지금 질문이 생긴 범위는 xgboost나 lightgbm들 하이퍼 파라미터 튜닝시 max_depth나 min_child_weigh등 각각의 범위를 지정해주는데 (ex) 학습률이나, hp.quniform('max_depth',5,20,1) 이런 범위들은 문제마다 다르게 설정해주어야 하는건 알겠는데 제가 나중에 새로운 문제를 혼자 풀 때 어떤수치를 보고 파라미터 범위들을 설정해주어야하는 걸까요??
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
멜론편 진행하고 있는데 배너 닫는 버튼이 안보이네요.
멜론편 진행하고 있는데 저는 상단에 배너가 떠서 강의 중 알려주신 대로 배너 닫는 버튼 클릭 추가하려고 하는데, 배너 닫는 버튼이 안보이네요.이런 경우는 어떻게 해야될까요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
옵션 선택에 따른 크롤링
안녕하세요. 이것이 진짜 크롤링이다 기본편을 막 완강했고, 실전편을 수강하기에 앞서 질문이 있어 글을 남깁니다. 네이버 쇼핑 페이지에서 크롤링을 할때, 제품 페이지 안에 들어가면, 여러 옵션을 선택할 수 있는 창이 있는데, 이 옵션들을 선택한 가격도 크롤링으로 가져올 수 있나요?예를 들어, 아래의 제품 페이지에 접속한 후, '선택'에 따라 가격이 달라지게 설정되어 있는 경우가 많은데, 해당 선택에 따른 가격을 크롤링할 수 있나요? 만약 가능하다면, 해당 내용을 실전편 강의 내용에서 다루는지 궁금합니다.
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
셀레니움으로 네이버를 열고나서 갑자기 data;라는 주소로 바뀌고 내용이 사라집니다.
현재 코드는 아래와 같습니다.자꾸 에러뜨는게 있어서 구글링하면서 2줄이 추가되었네요.options = Options() ## ERROR:device_event_log_impl.cc(218) 방지코드 options.add_argument('--no-sandbox') options.add_experimental_option("excludeSwitches", ["enable-logging"]) ## 화면 창 유지해주는 코드 options.add_experimental_option("detach", True) 그런데, 네이버 창이 떠서 잠시 머물다가 창이 꺼지진 않고 이렇게 바뀝니다.주소가 data; 내용은없음..무엇이 문제일까요. 구글링해도 잘 못찾겠네요.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
검색어 입력 관련
연습삼아 나라장터의 상단 부분에 셀레니움을 통해 특정 검색어를 입력 후 검색을 실행 하려합니다관련하여, 해당페이지 접속 후 단순히 find.element를 통해 driver.find_element(By.ID,"AKCKwd").sendkeys("검색어")와같이 사용할 수는 없는 것 인지요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
광고상품 외 표기 문의드립니다.
안녕하세요. 답변 감사드립니다.전체 코드를 첨부하여 다시 문의글 작성하였습니다.쿠팡 광고상품과 로켓상품도 표기하고자 합니다.if len(link.select(".ad-badge-text")) > 0:print("광고상품")를 아래와 같이 수정하면 될까요?해봤는데 아무표기가 안되서요. if len(link.select("span.badge rocket")) > 0:print("로켓상품") 그리고 광고상품 로켓상품 둘다 표현하고자 하면아래와 같이 표기하면 될까요?if len(link.select(".ad-badge-text")) > 0:print("광고상품")elif len(link.select("span.badge rocket")) > 0:print("로켓상품")광고상품은 광고상품이라고 잘 표기가 되는게 로켓상품은 전혀 결과가 나오지 않아서요.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 4 -> 그리디 , 결정문제 질문
안녕하세요! 강의 정말 잘 듣고 있습니다.섹션 4를 풀다가, 어떤 문제를 그리디를 쓰고, 어떤문제를 결정알고리즘을 써야하는지 감이 잡히지 않아서 질문 드립니다. 답변해주시면 정말 감사하겠습니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 문제에서 궁금한게있습니다.
ch[i] != 0라서 if문을 탐색하지않는다면 L에 해당하는 dfs함수는 뭘 반환하는건가요?? 반환하는게 안보일때는 return이 생략됐다고 생각하는건가요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
로그인 폼을 만들고 로컬 스토리지에 jwt저장하기 강의에서 질문입니다!
import React, { useState } from "react"; import { Card, Button, Form, Input, notification } from "antd"; import { useHistory } from "react-router-dom"; import Axios from "axios"; import { SmileOutlined, FrownOutlined } from "@ant-design/icons"; import useLocalStorage from "utils/useLocalStorage"; export default function Login() { const history = useHistory(); const [jwtAccessToken, setJwtAccessToken] = useLocalStorage( "jwtAccessToken", "" ); console.log("loaded Token: ", jwtAccessToken); // 왜 이게 두번이나 출력되는 것이지? const onFinish = (values) => { async function fn() { const { username, password } = values; const data = { username, password }; try { //응답을 꼭 받아야 한다. 토큰을 받아야 하니까 const response = await Axios.post( "http://127.0.0.1:8000/accounts/token/", data, { headers: { "Content-Type": "application/json" } } ); // const { data: token } = response; 이런 방식은 아래랑 다르다 response에서 data을 꺼내서 이름을 token이라 짓는 것 // const token = response.data 와 일치하며 밑에 녀석은 // const jwtAccessToken = response.data.access 과 일치한다 const { data: { access: jwtAccessToken }, } = response; setJwtAccessToken(jwtAccessToken); notification.open({ message: "로그인 성공!", icon: <SmileOutlined style={{ color: "#108ee9" }} />, }); // history.push("/accounts/login"); //TODO: 이동주소 } catch (error) { console.log(error); if (error.response) { notification.open({ message: "로그인 실패!", icon: <FrownOutlined style={{ color: "#ff3333" }} />, description: "아이디/암호를 확인해 주세요.", onClick: () => { console.log("Notification Clicked!"); }, }); } } } fn(); }; return ( <Card title="login"> <Form labelCol={{ span: 8 }} //부트스트랩은 한 행이 12 컬럼인데 antd는 24컬럼임 wrapperCol={{ span: 16 }} style={{ maxWidth: 600 }} onFinish={onFinish} autoComplete="off" > <Form.Item label="Username" name="username" rules={[{ required: true, message: "Please input your username!" }]} //rules을 통해 유효성검사로직이 들어가 잇다 > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[ { required: true, message: "Please input your password!" }, { min: 5, message: "5자리 이상 해주세요" }, // 한글자 한글자 들어갈때마다 검사해준다. ]} > <Input.Password /> </Form.Item> {/* //8칸 이동하고 16칸을 쓰겠다 */} <Form.Item wrapperCol={{ offset: 8, span: 16 }}> <Button type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> </Card> ); } 안녕하세요 강사님!! 위에서 15번째 줄에 있는 console.log("loaded Token: ", jwtAccessToken);이 부분이 페이지의 콘솔창에서 두번이나 나타납니다... 왜 그런지 알 수 있을까요?? 새로고침을 했을때도 두번 나타나고 submit을 했을 때도 2번 출력됩니다.아 ! 그리고 simplejwt토큰을 사용중 입니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 다른 풀이도 풀었는데 괜찮을까요?
정답은 제대로 나오긴 했는데 시간 초과라던가 하는 문제가 없을까요?4중 for문은 생각지도 못했네요..ㅠㅠ sudoku = [list(map(int, input().split())) for _ in range(9)] def solution(sudoku): length = len(sudoku) a, b, c, = list(), list(), list() # 행열 검사 for i in range(length): row, col = list(), list() for j in range(length): row.append(sudoku[i][j]) col.append(sudoku[j][i]) if len(set(row)) != 9 or len(set(col)) != 9: return "NO" # 3x3 격자판 검사 a.extend(row[0:3]) b.extend(row[3:6]) c.extend(row[6:]) if i == 2 or i == 5 or i == 8: if len(set(a)) != 9 or len(set(b)) != 9 or len(set(c)) != 9: return "NO" a, b, c, = list(), list(), list() return "YES" print(solution(sudoku))
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
1068번: 트리
제가 다음과 같이 코드를 작성했는데,100%까지 가다가 틀립니다.. 어떤게 문제일까요? 반례를 제시해주실 수 있나요?감사합니다. https://www.acmicpc.net/problem/1068 import sys input = sys.stdin.readline n = int(input()) g = list(map(int, input().split())) m = int(input()) cnt = 0 def DFS(x): g[x] = -1 for i in range(n): if g[i] == x: DFS(i) DFS(m) for i in range(n): if g[i] != -1 and i not in g: cnt += 1 print(cnt)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 리뷰복습하다가, 발견했습니다
최근에 다시 자바스크립트로 돌리면서, 기존에 파이썬으로 했던 것들 다시 모두 자바스크립트로 풀어보면서 문제 풀어보니, 발견했습니다.이거 첫번째 가정을, 그리디로 접근하면 해결 안되는 문제인것같습니다. 이후 가정들은 당연히 그리디 관념으로 최적값 찾을 수 있는데, 첫번째 가정부터 그리디로 접근하면 해결되는 문제가 아니라서 어긋나기때문에, 그리디관념이 통하지 않는 문제인것같습니다.완전탐색해버리거나, 시간 더 줄이려면 백트래킹 가지치기 해야하는 문제인것같습니다. 입력입니다!7172 67183 65179 61178 62177 63170 72181 60 기존 풀이(무조건 183선발) 가 내주는 답 : 3감독 현수가 원할 것 같은 답 : 6그리디로 가장 키 큰 사람 무조건 선발하는 과정이 풀이에서 오류인것같습니다.183 선발 가정하고 cnt 값 구하고,그다음 181 선발 가정하고 cnt값 구하고,쭉 다음 순으로 선발 가정하고 cnt값 구하는데,만약 어떤 사람 선발 가정하고 cnt값 구하는데남은 사람 수 다 합해도 기존 Max cnt보다 적을 경우,백트레킹 가지치기로 break 혹은 return 끊어버리는게 맞는것같습니다. 풀이1. 이중포문const input = require("fs") .readFileSync("input.txt") .toString() .trim() .split("\n"); const n = parseInt(input[0]); const arr = Array.from(Array(5), () => []); for (let i = 0; i < n; i++) { arr[i] = Array.from(input[i + 1].trim().split(" ")).map((v) => parseInt(v)); } function solution(n, arr) { arr.sort((a, b) => b[0] - a[0]); let cnt = 0; let largest = 0; let res = 0; for (let i = 0; i < n; i++) { largest = arr[i][1]; cnt += 1; if (res >= n - i) { break; } for (let j = i + 1; j < n; j++) { if (arr[j][1] > largest) { largest = arr[j][1]; cnt += 1; } } res = Math.max(res, cnt); cnt = 0; } console.log(res); } solution(n, arr); 풀이2. DFSconst input = require("fs") .readFileSync("input.txt") .toString() .trim() .split("\n"); const n = parseInt(input[0]); const arr = Array.from(Array(5), () => []); for (let i = 0; i < n; i++) { arr[i] = Array.from(input[i + 1].trim().split(" ")).map((v) => parseInt(v)); } let cnt = 0; let res = 0; //const list = []; function DFS(s, weight) { if (s < 0) return; if (cnt + n - s <= res) { cnt -= 1; s -= 1; return; } for (let i = s; i < n; i++) { if (arr[i][1] > weight) { cnt += 1; //list.push(arr[i][1]); DFS(i + 1, arr[i][1]); //list.pop(); } } res = Math.max(res, cnt); //console.log(list); cnt -= 1; } function solution(n, arr) { arr.sort((a, b) => b[0] - a[0]); DFS(0, 0); console.log(res); } solution(n, arr);
-
해결됨문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
로드맵상 다음강의? 크롤링? 퀀트1?
안녕하세요..멋지고 깔끔한 강의 덕분에 2주만에 완강했습니다!좋은 강의 준비해주셔서 감사합니다. 로드맵상 다음강의가 퀀트part1 으로 되어 있는데,크롤링을 모르고 가도 상관이 없을까요? 아니면 크롤링 강의 먼저 듣고 가는게 나을까요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
jsconfig 오류 질문입니다!
{ "compilerOptions": {"baseUrl": "src" },"include": ["src"]} keonhongkoo@keonhongui-MacBookAir frontend % yarn startyarn run v1.22.19$ react-scripts startnode:internal/modules/cjs/loader:1325 throw err; ^SyntaxError: /Users/keonhongkoo/Desktop/instagram/frontend/jsconfig.json: Unexpected token / in JSON at position 75 at parse (<anonymous>) at Module._extensions..json (node:internal/modules/cjs/loader:1322:39) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at getModules (/Users/keonhongkoo/Desktop/instagram/frontend/node_modules/react-scripts/config/modules.js:126:14) at Object.<anonymous> (/Users/keonhongkoo/Desktop/instagram/frontend/node_modules/react-scripts/config/modules.js:142:18) at Module._compile (node:internal/modules/cjs/loader:1254:14) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)Node.js v18.14.1error Command failed with exit code 1.info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. 이렇게 결과가 출력되는데 해결책이 안보이네요... vscode도 재시작해봤습니다ㅠ
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
질문드립니다.
사용자 입력 예외처리를 하고 있는데,1)문자 입력 시 오류2)3자리 숫자가 아닐 경우 오류다음과 같이 코드를 짰는데 1)의 경우 except 부분에서 "입력 오류"를 출력하지만 2)의 경우 "입력오류"가 출력되지 않고 그냥 재입력하게 되네요.혹시 이유를 알 수 있나요?또한문자 입력 시 "숫자만 입력 가능합니다"를 출력두자리수 입력 시 "세 자리 수를 입력하세요"를 출력하도록 하려면 코드를 어떻게 수정해야 할까요?감사합니다.!#세 자리 숫자만 입력할 수 있게 하는 함수 def input_check(msg, casting = int): while True: try: num = input(msg) # 사용자 입력 num_str = str(num) #맨 앞의 수가 0일경우 0이 잘려버리기 때문에 str을 따로 저장 if(casting(num) and len(num) == 3): return num_str except: print("입력 오류") continue
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
아나콘다 버전 관련 문의 드립니다~!
안녕하세요~!아나콘다를 설치하면서 두가지 정도 질문이 있습니다1) 2023.02.22날짜로 아나콘다 최신판을 설치하는데 그림과 같이 옵션사항에 환경변수 체크가 되지 않습니다 ㅠㅠ 업데이트 되면서 바뀐것인지 아나콘다 최신판에서 이 옵션을 선택하지 않아도 괜찮을까요??2) 2023.02.22날짜로 아나콘다 최신판에서는 파이썬 버전이 3.9버전인데 파이썬 공식버전으로는 3.11까지 배포가 되었습니다 버전 차이가 많이 나도 아나콘다를 설치하는게 사용에 더 편리할까요??
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
개발자 모드에서 클래스 항목 갯수 찾는 부분은 어떻게 설정할 수 있나요?
이부분 설정을 어떻게 하는지 궁금합니다. 검색해도 못찾겠습니다~ㅠㅠ
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
봉우리 - 가장자리 0으로 채우기
이렇게 (N+2)*(N+2) list를 만들고 안에다가복사해서 붙여넣어버리는 방법은 별로인가요? N = int(input()) input_list = [list(map(int, input().split())) for _ in range(N)] n_list = [[0] * (N + 2) for _ in range(N + 2)] for i in range(N): for j in range(N): n_list[i + 1][j + 1] = input_list[i][j]