묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
TypeError: RateLimit is not a constructor
코드는 동일한데, 해당 에러가 나옵니다. const jwt = require('jsonwebtoken'); const RateLimit = require('express-rate-limit'); exports.isLoggedIn = (req, res, next) => { if (req.isAuthenticated()) { next(); } else { res.status(403).send('로그인 필요'); } }; exports.isNotLoggedIn = (req, res, next) => { if (!req.isAuthenticated()) { next(); } else { res.redirect('/'); } }; exports.verifyToken = (req, res, next) => { try { req.decoded = jwt.verify(req.headers.authorization, process.env.JWT_SECRET); return next(); } catch (error) { if (error.name === 'TokenExpiredError') { // 유효기간 초과 return res.status(419).json({ code: 419, message: '토큰이 만료되었습니다', }); } return res.status(401).json({ code: 401, message: '유효하지 않은 토큰입니다', }); } }; exports.apiLimiter = new RateLimit({ windowMs: 60 * 1000, // 1분 max: 10, delayMs: 0, handler(req, res) { res.status(this.statusCode).json({ code: this.statusCode, // 기본값 429 message: '1분에 한 번만 요청할 수 있습니다.', }); }, }); exports.deprecated = (req, res) => { res.status(410).json({ code: 410, message: '새로운 버전이 나왔습니다. 새로운 버전을 사용하세요.', }); };
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청드립니다.
인프런 아이디 : tbgusrud12@gmail.com 인프런 이메일 : tbgusrud12@gmail.com 깃헙 아이디 : tbgusrud12@gmail.com 깃헙 Username : graceFor
-
미해결함수형 프로그래밍과 JavaScript ES6+
return 사용
안녕하세요 강의를 보다가 궁금한 점이 생겼는데요!! return을 해주는 것과 return을 안해주는 것의 차이가 무엇이 있나요? 또 확인을 해보려면 어떤 식으로 하는 것이 좋을 까요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
axios-hooks 설치후 에러가납니다.
처음에 npm으로 설치를해서 충돌이 난거같아 nodemodules를 지워버리고 yarn.lock을 지운뒤 yarn install로 node_modeules를 재설정했습니다. 그후 yarn start를하면 pages를 제대로 못읽어옵니다 C:\PYPRO\FRONT\SRC├─assets├─components├─pages│ └─accounts└─utils 디렉토리 구조는 이렇게 제대로 돼어있는데 ./src/index.jsModule not found: Can't resolve 'pages' in 'C:\pypro\front\src' yarn start를하면 해당 에러를 뱉습니다 ㅜㅜ
-
미해결스프링 배치
두 번째 step를 호출할 때
안녕하세요. 강사님 강의 33:40 분에 '두번째 step를 호출할 때'라고 하셨는데 정확히 두번 step를 호출할 때가 어떤 의미인가요? step1(@Value(~)) 메서드 호출하는 시점에 한 번, stepBuilderFactory.get("step1")에서 두 번째인가요? 감사합니다.
-
미해결타입스크립트 입문 - 기초부터 실전까지
공식문서에 가능한 한 "인터페이스"를 사용하라고 적혀있는데
안녕하세요. 캡틴판교님 강의영상 잘 보고 있는 구독자입니다. 이번영상에 마지막 부분에서 제목과 같이 공식문서에 가능한한 "인터페이스"를 사용하라고 언급되어 있다고 말씀하셨는데요.. 목차를 보니 앞으로 들어야 할 강의가 다 "타입"과 관련된 강의밖에 없어서요. 아직 다 보진 못했지만 이정도면 "타입"위주로 코드를 만들어야 하는 거 아닌가 생각에 궁금하여 질문드립니다. 타입과 인터페이스 분명 역할은 다를거라 생각은 하고 있지만. 권장하는 "인터페이스"에 비해 타입에 대해서 커리큘럼을 이렇게 많이 잡은 이유가 있을까요?
-
해결됨스스로 구축하는 AWS 클라우드 인프라 - 기본편
아키텍쳐 이미지를 받을 수 있을까요?
안녕하세요. 강사님 강의 자료가 따로 없어서 직접 필기하면서 공부하고 있는데 필기하고 있는곳에 아키텍쳐 이미지를 넣고 싶어서 그런데 혹시 따로 보내주실 수 있을까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 압출해제 불가
강의자료에 있는 압축파일을 다운로드 후 압축해제 과정에서 올바르지 않는다는 문구와 함께 압축해제가 불가능 한데 해결책이 있나 궁금합니다. 기존 파일과 최근 업로드 파일 (01.06) 버전 모두 동일하게 불가능합니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
가상머신 로그인문제
제가 이제 막 환경구축을 시작했습니다. 일단 참고영상은 보지않고 vm통합 환경 구성 강의를 참고해서 구축을 시행하고 있습니다. 제 환경은 window가 아닌 mac 환경입니다 server 01, 02를 다운받고 vm에 옮겨서 실행시키면 두가지 문제가 발생합니다. #1 01은 잘 실행이 되지만 -> 로그인하라는 창이 뜹니다. #2 02는 실행시키면 -> kernel panic -> not syncing : attempted to kill inif 이렇게 창이 뜨며 실행되지 않습니다. 긴 질문 답변 기다리겠습니다. 감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지구조나누신거 클린아키텍쳐기반으로하신건가요?
패키지구조나누신거 클린아키텍쳐기반으로하신건가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
구조체랑 배열
안녕하세요 오늘 배열까지 배우고 가지고 있는 의문점에 대해서 질문 드립니다.간단히 예시 코드를 만들어 주석으로 질문을 달았습니다. #include <iostream> using namespace std; int arr[10]; int arr_two[10]; struct Test { int arr[10]; }; int main() { arr[0] = 'h'; // 식이 수정할 수 없는 lvaule라 대입 할수 없음. //arr_two = arr; Test one, two; one.arr[0] = 'h'; // 반면에 구조체의 경우, 구조체 내에 배열을 포함해도 값복사가 이루어 짐. two = one; // 구조체를 단순히 변수들의 묶음이라 생각하면 이해가 안됨. } 아직 어셈블리 분석을 잘 못해서 잘 이해가 안갑니다..
-
미해결홍정모의 따라하며 배우는 C언어
8:39 / 9:25
강의에서 21번째 줄의 코드 printf("%u\n", (unsigned)(& arr2d[1])); 에서 주소라는 의미를 강조하기 위해 &를 붙였다. 사실은 있으나 없으나 똑같다. 라고 이해해도 될까요? 강의에서 33번째 줄에서 (unsigned)* (arr2d + j) 이렇게 되어있는데 (unsigned) (arr2d + j) 과 동일한 값을 출력합니다. *은 역참조 했다. 역참조한 값도 결국 주소이다 라고 이해해도 될까요?
-
미해결Microsoft Teams - 1 Teams 활용 (기초부터 팀 구성 활용까지)
채널명 변경 후 파일 타이틀이 변경되지 않는 문제
채널명을 변경 후 파일 (Files)을 클릭하면 채널명과 동일한 타이틀이 표시되야 하는데 변경전 타이틀로 표시됩니다. 예를 들어 채널명을 '발주 관리'에서 '업무 협업'으로 변경했는데 채널명 자체는 변경이 되었지만 파일 타이틀은 여전히 '발주 관리'로 표시가 됩니다. [발주 관리> A 폴더 > B 파일]로 표시 되었던 것이 채널명과 동일하게 [업무 협업> A 폴더 > B 파일]로 표시가 되어야 하는데 여전히 발주 관리로 표시가 됩니다. 스크린 샷을 첨부 할 수 있으면 조금 더 설명이 용이할텐데 제 설명이 잘 전달이 되었는지 모르겠습니다. 아무쪼록 답변 부탁 드립니다. 감사합니다.
-
미해결블록쌤의 ‘내 인생을 바꿔줄 블록체인과 메타버스, 기초부터 실전까지’
강의 ppt 는 제공 안되나요?
강의 노트 정리하려고 하는데 ppt는 제공 안되는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S fill과 memset 질문 있습니다.
#include <bits/stdc++.h> #define endl '\n' using namespace std; int n, m, a, b; int _max = numeric_limits<int>::min(); int virus[10002]; vector<int> adjList[10002]; bool visited[10002]; void fastIO() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } int DFS(int v) { visited[v] = 1; int infection = 1; for (auto adjV : adjList[v]) { if (visited[adjV]) continue; infection += DFS(adjV); } return infection; } int main() { fastIO(); cin >> n >> m; while (m--) { cin >> a >> b; adjList[b].push_back(a); } for (int i = 1; i <= n; i++) { //memset(visited, 0, sizeof(visited)); fill(visited, visited + 10000, 0); virus[i] = DFS(i); _max = max(_max, virus[i]); } for (int i = 1; i <= n; i++) { if (virus[i] == _max) { cout << i << ' '; } } return EXIT_SUCCESS; } 완탐을 DFS로 변경하여 풀었는데, fill()을 사용하여 0으로 초기화하면 계속 틀렸다 채점돼서 풀이 참고하여 memset()으로 변경하니 정답으로 채점됩니다. 똑같이 0으로 초기화 하는 것 아닌가요..?
-
해결됨스스로 구축하는 AWS 클라우드 인프라 - 기본편
강의 자료 다운
안녕하세요 강의 자료는 받아볼 수 없나요? 강사님 설명하신 PPT 자료, 아키텍쳐 등을 다운받고 싶습니다. 스크린 캡쳐도 안되네요.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
npm run dev 오류
1. npm run dev 하면 >react-boiler-plate@1.1.0dev >concurrently "npm run backend" "npm run start --prefix client" 2. 순서대로 명령어 입력시
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
파이어베이스 관련 npm run build 에러
파이어베이스 관련 npm run build 에러 가 나와서 문의드립니다. 무엇이 에러인지를 모르겠습니다. 검토바랍니다. ./src/firebase.jsSyntaxError: /Users/ucoder/Documents/GitHub/react-firebase-chat/src/firebase.js: Unexpected token (1:22)> 1 | import {intializeApp} firebase from "firebase/app"; | ^ 2 | import "firebase/auth"; 3 | import "firebase/database"; 4 | import "firebase/storage"; import firebase from "firebase/app"; 으로 변경했으나 아래와 같은 메시지가 나옵니다. Failed to compile. ./src/firebase.js Attempted import error: 'firebase/app' does not contain a default export (imported as 'firebase').
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
require 받는 { } 의 문법적 실체는?
안녕하세요. worker thread 편을 학습하다가 문득 궁금한 것이 있어서 이곳 'module'편에 질문 올립니다. const { odd, even } = require('./var'); 에서 { odd, even }, 이 블럭의 문법적 실체는 무엇인가요? 일단, { even, odd } 와 같이 순서를 바꿔도 정상 실행되는 것을 보니 array는 확실히 아닌 것 같고, 그렇다고 다루는 방법을 보면 set 혹은 object 라고 하기에도 애매합니다. 요소를 단독으로 사용하니 말입니다. 감사합니다.
-
해결됨[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
탐색기에서 파일 실행 vs IDE에서 파일 실행 결과물이 다릅니다
(코드는 하단에) pycharm을 통해 실행하면 큰 사진으로 잘 긁어오는데, 파일 탐색기에서 파일을 더블클릭해서 실행하는 경우 큰 사진으로 안 되네요. 물론 pyinstaller를 이용해 exe 파일로 만들어도 사진은 작게 나와요... - 탐색기 실행 - pycharm에서 버튼 눌러서 실행 Code from selenium import webdriver import urllib.request as request import pyautogui import os import time import random # Activate chromedriver driver = webdriver.Chrome() driver.implicitly_wait(5) search_word = pyautogui.prompt("검색어를 입력해주세요.") driver.get(f'https://www.google.co.kr/search?q={search_word}') driver.maximize_window() # '이미지 검색' click image_search = driver.find_element_by_xpath('//*[@id="hdtb-msb"]/div[1]/div/div[2]/a') image_search.click() # Make a folder if not os.path.exists(search_word): os.makedirs(search_word) # Scroll last_height = driver.execute_script('return document.body.scrollHeight') while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(5) new_height = driver.execute_script('return document.body.scrollHeight') if new_height == last_height: break last_height = new_height # 이미지 개별 클릭 image_click = driver.find_elements_by_css_selector('.rg_i.Q4LuWd') for i, image in enumerate(image_click, start=1): driver.execute_script('arguments[0].click();', image) time.sleep(random.randint(10, 30) * 0.1) target_image = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[' '2]/div/a/img') target_source = target_image.get_attribute('src') # src 출력해보면 확장자가 안 뜨니까 그냥 일괄적으로 통일함 opener = request.build_opener() opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/36.0.1941.0 Safari/537.36')] request.install_opener(opener) print('작업이 완료되었습니다.') driver.close()