묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Window 함수를 이용한 누적 합 문의
안녕하세요. 좋은 강의 잘 들었습니다. window 관련한 누적 합 문의 드립니다. 예를들어 A, B, C 모델의 일별 판매량을 누적으로 구하고자 합니다. 1일 : 2개 , 1개, 2개 2일 : 2개 , 2개, 2개 3일 : 0개, 0개, 0개 4일 : 0개, 1개, 2개 각각 A B C의 판매량이 있을때, partition 모델명, order 날짜로 하면 - 중간에 0이 모두 있는 곳 혹은 - A라는 모델만 추출했으때 3일과 4일은 누적합의 리스트에 나오지 않는데.. 이를 해결하기 위한 팁이 있나요? 중간에 판매가 0이라도 전일 누적값이 그대로 출력되어 표현하고 싶습니다.
-
해결됨단 두 장의 문서로 데이터 분석과 시각화 뽀개기
시계열 데이터 전처리 질문입니다.
강사님 replace 설명중에([5/25] 시계열 데이터 전처리4:40) 에 string이 다 일치 하지 않는 다고 설명하셨는데, 자세하게 설명 부탁합니다. 해당 날짜는 전부 object 로 보여지는데, 그렇지 않아서 앞에 str를 붙인다고 하시니 이해가 되지 않아서요. 답변 미리 감사드리고 건강 조심하세요.
-
해결됨리액트로 나만의 블로그 만들기(MERN Stack)
AppNavBar에서 home으로 가는 링크와 Add post 버튼, 로그 아웃버튼에서 에러가 발생합니다
안녕하세요 강사님 AppNavBar에서 버튼을 클릭했을 때 동일한 에러가 발생하여 질문을 올립니다. 아래 사진을 첨부하겠습니다. 예를 들어 post 버튼을 눌렀을 때 아래와 같이 창이 뜨고 새로고침을 하면 정상적으로 글을 작성할 수 있도록 창이 나타납니다 로그아웃을 눌렀을 때 로그아웃이 잘 되지만 다시 다른 버튼을 누르려고 해도 창이 로그아웃 한 상태로 멈춰있습니다. Uncaught Could not find router reducer in state tree, it must be mounted under "router" 이런 에러가 발생을 공통적으로 발생하는데 어디에서 손을 대야할지 잘 모르겠습니다
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
button에 hover
안녕하세요! 강의에서 처럼 dorpdown에 hover를 주면 잘 작동하는데 왜 button에 주면 안될까요 ㅠ?
-
미해결3시간이면 충분히 입문자를 벗어날 수 있는 프리미어 프로
자막 쉽고 빠른 툴이 정확하게 뭐죠?
발음이 뭉개져서 알아 듣지 못하겠어요 툴을 알고싶은데 창을 위쪽으로 올려놔서 무슨 툴인지도 안보이고요
-
미해결윤재성의 Node.js 서버 프로그래밍 과정
new -> other -> javascript -> npminit가 없어요 ㅜㅜ
new -> other -> javascript -> npminit가 없어요 ㅜㅜ 어떻게 하면 좋을까요?
-
미해결자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
memo = iter(memo, val)
안녕하세요. 05:00 에서 memo를 계속 덮어쓰는 memo = iter(memo, val) 구문이 처음 실행될 때, 좌변의 memo는 값이 없는 임의의 변수에서 0, 1이 더해진 1이 할당되는 거 맞나요?
-
미해결몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
예제파일
강의에서 예제파일보자고 하셨는데 어떻게 받나요?
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
게속 오류떠요
고쳐도 수용없어요 from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from bson.objectid import ObjectId from flask import abort from datetime import datetime from flask import redirect from flask import url_for import time import math app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" mongo = PyMongo(app) # 메인 @app.route("/") def Main(): Myyy = """ <meta http-equiv="refresh" content="0;url=/list"> """ # return """<meta http-equiv="refresh" content="0;url=/write">""" return Myyy @app.template_filter("formatdatetime") # 시간 def format_datetime(value): if value is None: return " " now_timestamo = time.time() offset = datetime.fromtimestamp(now_timestamo) - datetime.utcfromtimestamp(now_timestamo) value = datetime.fromtimestamp((int(value) / 1000)) + offset return value.strftime('%Y-%m-%d %H:%M:%S') # 년/월/일 시/분/초 @app.route("/list") def lists(): # 중요 # 페이지 값 (값이 없는 경유 기본값은 1) page = request.args.get("page", 1, type=int) # 한페이지당 몇개의 게시물을 출력할지 limit = request.args.get("limit", 7, type=int) # 기본값은 10개이다 수정가능 search = request.args.get("search", - 1, type=int) keyword = request.args.get("keyword", type=str) # 최종적으로 완성된 쿼리를 만글 변수 query = {} # 검색어 상태를 추가할 리스트 변수 search_list = [] if search == 0: search_list.append({"title": {"$regex": keyword}}) elif search == 1: search_list.append({"contents": {"$regex": keyword}}) elif search == 2: search_list.append({"title": {"$regex": keyword}}) search_list.append({"contents": {"$regex": keyword}}) elif search == 3: search_list.append({"name": {"$regex": keyword}}) # 검색 대상이 1개하도 존재할 경우 query 변수 $or 리스트 쿼리 한다 if len(search_list) > 0: query = {"$or": search_list} # {"$and":[ # {"title": {"$regex": "파이썬"}}, # {"title": {"$regex": "파이썬"}}, # {"title": {"$regex": "안드로아드"}}, # ]} print(query) board = mongo.db.board # DB가져오기 datas = board.find(query).skip((page - 1) * limit).limit(limit) # 게시물의 총 갯수 tot_count = board.find(query).count() # 마지막 페이지의 수를 구합니다 last_page_num = math.ceil(tot_count / limit) # 페이지 블럭을 5개씩 표기 block_size = 5 # 변경 가능 # 현재 블럭의 위치 block_num = int((page - 1) / block_size) # 블럭 시작위치 block_start = int((block_size * block_num) + 1) # 블럭의 끝 위치 block_last = math.ceil(block_start + (block_size - 1)) return render_template("list.html", datas=datas, limit=limit, page=page, block_start=block_start, block_last=block_last, last_page_num=last_page_num, search=search, keyword=keyword) @app.route("/view/<idx>") def board_view(idx): # idx = request.args.get("idx") if idx is not None: board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data is not None: result = { "id": data.get("_id"), "name": data.get("name"), "title": data.get("title"), "contents": data.get("contents"), "pubdate": data.get("pubdate"), "view": data.get("view"), } return render_template("view.html", result=result) return abort(404) @app.route("/write", methods=["GET", "POST"]) def board_write(): if request.method == "POST": name = request.form.get("name") title = request.form.get("title") contents = request.form.get("contents") print(name, title, contents) current_utc_time = round(datetime.utcnow().timestamp() * 1000) board = mongo.db.board post = { "name": name, "title": title, "contents": contents, "pubdate": current_utc_time, "view": 0, } x = board.insert_one(post) print(x.inserted_id) return redirect(url_for("board_view", idx=x.inserted_id)) else: return render_template("write.html") if __name__ == "__main__": app.run(host="0.0.0.0", debug=True, port=8501) html도 고쳐도 여전히 오류떠요 <script> function search() { var val_search = document.getElementById("search").value; var val_keyword = document.getElementById("keyword").value; if(val_search == "" || val_keyword == "") { return false; } else { self.location.href = "{{url_for('lists')}}?search=" + val_search + "&keyword=" + val_keyword; } } </script> {% if datas.count() > 0 %} <title>목록</title> <table> <thead> <tr> <td>번호</td> <td>제목</td> <td>이름</td> <td>날짜</td> <td>조회수</td> </tr> </thead> <tbody> <!--반복되는 구간--> {% for data in datas %} <tr> <td>{{loop.index + ((page - 1) * limit)}}</td> <!--게시물 번호--> <td><a href="{{url_for('board_view', idx=data._id, page=page, search=search, keyword=keyword)}}">{{data.title}}</a></td> <td>{{data.name}}</td> <td>{{data.pubdate | formatdatetime}}</td> <td>{{data.view}}</td> <!-- <td>{{data.title}}</td> <td>{{data.title}}</td> --> </tr> {% endfor %} <!--반복되는 구간 끝--> </tbody> </table> {% if block_start - 1 > 0 %} <a href="{{url_for('lists', page=block_start - 1, search=search, keyword=keyword)}}">[이전]</a> {% endif %} {% for i in range(block_start, block_last + 1) %} {% if i > last_page %} <!-- {{ i }} --> {% else %} {% if i == page %} <b>{{i}}</b> {% else %} <a href="{{url_for('lists', page=i, search=search, keyword=keyword)}}">{{ i }}</a> {% endif %} {% endif %} {% endfor %} {% if block_last < last_page %} <a href="{{url_for('lists', page=block_last + 1, search=search, keyword=keyword)}}">[다음]</a> {% endif %} <select name="search" id="search"> <option value="">검색대상</option> <option value="0">제목</option> <option value="1">내용</option> <option value="2">제목+내용</option> <option value="3">작성자</option> </select> <input type="text" name="keyword" id="keyword" > <input type="button" value="검색" onclick="search()"> {% else %} <h3>테이터가 없습니다</h3> {% endif %}
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
프로젝트 import시
lec21pjt001 <--이렇게 나오지 않고 자꾸 lec21로 로드가 되네요 lec21pjt001이 저렇게 로드되니까 lec21pjt002도 lec21로 로드 되려고해서 같은 이름이라고 로드가 안됩니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
ffmpeg 관련
안녕하세요 강사님, 리액트 강의 잘 듣고 있습니다! 다름이 아니라 윈도우용 ffmpeg를 다운로드 하려고 홈페이지에 접속하니 9월 18일에 종료된다는 안내문구가 써있더라구요 ffmpeg가 종료되어도 수업을 계속 진행하기에는 지장이 없는걸까요? 9월 18일 안에 이 수업을 다 수강하지 못할 것 같아서요ㅎㅎ
-
미해결파이썬 라즈베리파이 IoT프로젝트-원격모니터링 자동차
질문
etcher에서 플래시가 실패됬다고 뜨는데, 어떻게 해결할 수 있나요?
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
image upload 오류
pubspec.yaml에 로드 잘 입력해주었는데 애뮬레이터 실행시 이런 오류가 뜹니다. 확인 부탁드립니다.
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
;id를 입력하면 아무것도 나오지 않습니다. 정상인가요?
영상처럼 medium 단계에서 ;id를 입력하면 아무것도 나오지 않습니다. &id는 정상적으로 출력됩니다.
-
해결됨홍정모의 따라하며 배우는 C언어
6.13 강 1분 23초
/* scanf가 쓰일때 마다 생기는 문제가 있습니다 scanf 값을 입력 받고 enter를 치고 다시한번 입력한뒤 enter를 다시 한번 처야 맨처음 입력한 값이입력됩니다 예를 들어 아래 코드에서 4354(설정해둔 비밀번호)를 입력하고 enter 를 치면 아무일도 일어나지 않고 다른숫자(342) 를 치고 enter를 다시한번 치면 그제서야프로그램이 종료가 됩니다 제가 계속 실수 하는 부분이 있는걸까요? */ #include <stdio.h> int main(void) { int pass_waord = 4354; int input = 0; printf("Enter secret code : "); scanf(" %d\n", &input); while (input != pass_waord) { printf("Enter secret code : "); scanf(" %d\n", &input); } printf("Good"); return 0; }
-
리액트로 나만의 블로그 만들기(MERN Stack)
몽고DB에서 이미지를 불러오지 못 합니다.
삭제된 글입니다
-
미해결React로 NodeBird SNS 만들기
인피니트 스크롤링에 관한 질문입니다.
안녕하세요 :) 강의 7-11에서 LOAD_MAIN_POSTS_REQUEST가 중복 요청이 되어 useRef를 사용하여 해결을 하셨는데, 해시태그 페이지에서도 같은 문제가 발생해서 git에 올려놓으신 구버전(old branch) 소스코드나 강좌에서 참고하려했지만 useRef를 적용하는 것에 대한 설명이 없었습니다. 그래서 배운 내용을 스스로 적용해보던 와중에 문제가 생겨서 이렇게 질문을 남깁니다. 먼저 제가 수정한 코드는 아래와 같습니다. (제가 코드를 첨부하는데 제가 잘 다루지 못해서 그런지 javascript로 설정을 해도 계속 글씨가 제대로 보이지 않아서 굵은 글씨로 변경했습니다ㅜㅜ) 해시태그 페이지에서도 마찬가지로 LOAD_HASHTAG_POSTS_REQUEST 가 중복요청이 돼서 일단 saga에는watchLoadHashtagPosts의 takeLatest를 throttle로 수정하여 아래와 같은 코드로 바드로 바꿨습니다. function* watchLoadHashtagPosts() { yield throttle(2000, LOAD_HASHTAG_POSTS_REQUEST, loadHashtagPosts); } 그리고 Hashtag.js 는 useRef를 사용하여 아래와 같이 바꿨습니다. import React, { useEffect, useCallback, useRef } from 'react'; import PropTypes from 'prop-types'; import { useDispatch, useSelector } from 'react-redux'; import { LOAD_HASHTAG_POSTS_REQUEST } from '../reducers/post'; import PostCard from '../components/PostCard'; const Hashtag = ({ tag }) => { const dispatch = useDispatch(); const { mainPosts, hasMorePost } = useSelector(state => state.post); const countRef = useRef([]); const onScroll = useCallback(() => { if (window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300) { const lastId = mainPosts[mainPosts.length - 1] && mainPosts[mainPosts.length -1].id; if (!countRef.current.includes(lastId)) { if (hasMorePost) { dispatch({ type: LOAD_HASHTAG_POSTS_REQUEST, lastId, data: tag, }) } countRef.current.push(lastId); } } }, [hasMorePost, mainPosts.length, tag]); useEffect(() => { window.addEventListener('scroll', onScroll); return () => { window.removeEventListener('scroll', onScroll); } }, [mainPosts.length, hasMorePost, tag]); return ( <div> {mainPosts.map(c => ( <PostCard key={+c.createdAt} post={c} /> ))} </div> ); }; Hashtag.propTypes = { tag: PropTypes.string.isRequired, }; Hashtag.getInitialProps = async (context) => { const tag = context.query.tag; context.store.dispatch({ type: LOAD_HASHTAG_POSTS_REQUEST, data: tag, }) return { tag }; }; export default Hashtag; 그리고 버그는 아래와 같은 순서로 실행시키면 발생합니다. 1. 예를 들어 게시물이 25개 가량 있다고 가정을 합니다. 2. http://localhost:3060/hashtag/인프런 페이지에서 10개씩 게시물을 보여주는 인피니티 스크롤링을 한 번 해서 21번째 게시글의 #인프런 해시태그를 클릭합니다. 3. http://localhost:3060/hashtag/인프런 페이지가 로드될 때, 리덕스 devtools를 통해 액션어 어떻게 실행이 되는지 확인해보면 LOAD_HASHTAG_POSTS_REQUEST LOAD_HASHTAG_POSTS_REQUEST LOAD_HASHTAG_POSTS_SUCCESS LOAD_HASHTAG_POSTS_SUCCESS 이런 식으로 동작을 해서 게시물을 2번 로드해서 중복된 게시물이 보이게 됩니다. 4. console.log를 작성해서 확인해보면, 위와 같은 과정으로 실행시켰을 때 Hashtag.getInitialProps에서 뿐만 아니라 onScroll이 한 번더 실행이 돼서 dispatch로 인해 LOAD_HASHTAG_POSTS_REQUEST를 요청하는 것을 확인할 수 있었습니다. 왜 onScroll이 페이지가 새로 로드가 될 때 같이 실행이 되는지 모르겠습니다. 인피니트 스크롤링을 하지 않은 상태의 최신 10개 글 내에서 해시태그를 클릭하거나, 해당 해시태그 페이지를 새로고침하면 위와 같은 버그가 발생하지 않았고, 인피니트 스크롤링을 실행한 후 생성되는 게시물의 해시태그를 클릭하면 버그가 발생합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
mongoDB cluster collection 조회시 오류가 뜹니다
이러한 오류는 어떻게 해결할 수 있을까요ㅠㅠ...
-
미해결제주코딩베이스캠프 Code Festival: JavaScript 100제
return merge(mergeSort(left), mergeSort(right));
return merge(mergeSort(left), mergeSort(right)); 위 부분이 이해가 안되서 질문 남깁니다. mergeSort(left)를 끝까지 다 돌고 나면 숫자가 하나밖에 안남는데, 어떻게 merge에서는 모든 값이 다 리턴되나요?
-
미해결눈떠보니 코딩테스트 전날
jupyter notebook 사용법
goormide의 url을 통해 들어간 jupyter notebook에서는 !ls, !touch등 명령어가 잘 작동하는데 알고리즘 폴더를 만들고 거기서 powerShell에 jupyter notebook을 입력하고 생성된 url로 들어가면 !ls나 !touch등의 명령어가 'ls'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나오며 동작하지 않습니다ㅠㅠ