묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
bcrypt의 compare메서드의 리턴값이 계속 false로 나오는데요, 어떻게 하면 true를 반환할까요
안녕하세요, 제로초님! bcrypt의 compare 함수의 return 값이 계속 false가 나와서, 혹시 제시해주실 힌트가 있으실지 글을 남겨봅니다 이와 관련해 구글링에서 제시한 방법들을 적용해봤는데도, 계속적으로 false가 리턴됩니다ㅠ… : 1. password 타입의 length를 늘리기(데이터가 짤려서 출력될 수 있다고 하여,,) : 2. password 타입을 string 타입으로 변환? 후 디비에 저장하기 : 3. pre 미들웨어를 사용할 경우, pre()특성상 반복적?으로 pwd를 해싱하기 때문에 isModified()/ .isNew() 일 경우를 추가하기 : 4. compare()함수의 인자를 작성시, 인자의 순서 체크 - 첫번째인자는 유저가 입력한것, 두번째는 hashed되어 디비에 저장된 패스워드로 입력하기 위와 같이 해결방법을 찾았는데요,,, 1,2번은 이미 mongoose에서 해결해주는 부분이라 패스하고,,, 3,4번은 적용을 했는데도 ㅠ comprare함수의 리턴값이 false로 나옵니다,,, compare함수의 리턴값이 false여도... false를 true라고;;; 조건식을 변경하면;;;; 입력한 값에 해당하는, json객체가 출력되어 문제는 없지만,,,, (아래 authController.js파일, !passwordMatch를 passwordMatch로 변경하면 원하는 로직대로 나오지만 ㅠ ) (폼에 입력한 값에 해당한, json객체가 나와서 문제는 없는데..) false를 true라고 가정하고;; 코드를 변경하면 원하는 결과를 얻게 되는데,,, 작성된 코드가 ,,,이건 아닌거 같아서요 ㅠ 왜 계속,,,false를 반환할까요,,;; bcrypt말고 다른 라이브러리를 사용해야할까요?? 감사합니다, p.s) 추가 질문입니다. 1. issModified(‘password’) || isNew()User.js 내용 중 UserSchema.pre('save', async function () {…} 부분에서, isModified(‘password’) || isNew() 이하 블록이 실행되는 조건은, password가 변경되거나 처음 입력될 경우 실행되는 건지요, 제가 잘 이해하고 코드를 작성했는지 궁금합니다 2. 에러 핸들링 bycript 공식홈페이지나 관련 코드를 구글링을 해보면, 코드를 콜백방식으로 작성한걸 심심치 않게 볼수 있는데요, 저는 async-await로 작성해서, 이걸어떻게 에러 핸들링 코드를 작성해야할까요? try..catch로도 충분할까요? -------------------------------------------------------------------------------------------------------------------------- User.js import bcrypt from 'bcrypt'; import mongoose from 'mongoose'; const UserSchema = new mongoose.Schema( { …중략… password: { type: String, required: true, min: 6, }, …중략… }, { timestamps: true } ); UserSchema.pre('save', async function () { try { const salt = await bcrypt.genSalt(10); if (this.isModified('password') || this.isNew()) { this.password = await bcrypt.hash(this.password, salt); } } catch (err) { console.log(err); } }); const User = mongoose.model('User', UserSchema); export default User; authController.js export const login = async (req, res) => { try { const { body: { email, password }, } = req; const user = await User.findOne({ email: email }); if (!user) { // user가 ! 없는것이 맞다(true)면 = user가 없다면 return res.status(404).json({ error: 'user is not found' }); } else { const passwordMatch = await bcrypt.compare(password, user.password); //부정문을 먼저 시작하는 조건식 // passwordMatch가 false로 나와 계속 { error: 'Invalid Password' }를 출력 // !passwordMatch에서 !을 제거하면 원하는 결과 도출 if (!passwordMatch) { // match되는 password가 !없다는게 맞다(true)면 = return res.status(400).json({ error: 'Invalid Password' }); } return res.status(200).json(user); } } catch (err) { return res.status(401).json(err); } };
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
캐글 RAM 초기화 코드 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. plant pathology 실습에서 config를 사용하는 부분 코드를 실행하다가 OOM 에러가 났습니다 아마도 out of memory...(?)같은데 이전 강의에서 ram을 비워주는 코드를 강사님께서 몇번 사용하셨던 기억이 있는데 정확히 어디쯤이었는지 기억이 나지 않아서 여쭤봅니다!!
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
다시올려주신 예제파일로하는데
import io import json import sys import urllib.request as req from fake_useragent import UserAgent sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8') ua = UserAgent() headers = { 'User-Agent': ua.ie, 'referer': 'https://finance.daum.net/' } url = "https://finance.daum.net/api/search/ranks?limit=10" print(request.get_method()) 에러가난다고하네요 자꾸 아마 저 url값이 또 바뀐거같은데 뭘 넣어야하나요??? api주소값은 찾을수가없는데 이전 강의내용 정부사이트는 rss누르면 저런 api들어있는 주소를 찾을수있엇는데 다음은 찾을수가없네요??
-
미해결함수형 프로그래밍과 JavaScript ES6+
ES6 과의 차이점
너무나 좋은 강의로 함수형 프로그래밍 에 대해서 조금씩 감을 잡아 나가는 방향입니다. 함수의 비즈니스 로직을 숨기고 함수의 표현식들을 드러내서 이 과정에 사이드 이펙트를 없애고 직관적으로 읽기 좋은 형태 를 지니게 되는 것 같습니다. 다만, OOP 에서의 메서드 와의 다른 점으로는 내외부 함수의 교류가 없다 정도인 것 같습니다. 다만 여기까지가 주요한 맥락이라면 아래 코드가 결국은... const sum = (func, iter) => go( iter, map(func), reduce(add) ); 이러한 코드 와의 별다른 차별점은 없는 것으로 해석되지 않을까요? const sum = (func, iter) => iter.map(func).reduce(add); 이렇게 이해 하였는데 맞는 것일까요?
-
미해결스프링 배치
Add connection elided, waiting 1, queue 2 오류 발생
강사님 안녕하세요 오류 관련 문의드립니다. 현재 제가 작성한 잡에서 MultiThreaded Step, Flow, AsyncProcessor, AsyncWriter기능을 동시에 사용하고 있는데요, 하기와 같은 오류가 발생하였습니다. Add connection elided, waiting 1, queue 2 이런 케이스는 어떻게 해결해야할까요? 답변 부탁드립니다. 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
redux-devtools-extension 관련문제입니다.
안녕하세요 현영님. 다름이 아니라 이번 강의에서 리덕스 익스텐션을 설치한 후에 처음에 화면이 나오다가 갑자기 저렇게 아무런 화면이 뜨지않고 회색으로 되길래 뭐가 문젠인지 'redux-devtools-extension not working' 이런식으로 스택오버플로우에서 보고 여러가지 설정들을 건드렸는데 해결이 되지않아 질문 남깁니다. 설치는 다 했고 extension 관련 에러는 없어 이유를 모르겠네요. (생각보다 쉬운 문제인가요...ㅠ) 제 configureStore.js 입니다. import {createWrapper} from 'next-redux-wrapper' import {compose, createStore ,applyMiddleware} from 'redux'; import {composeWithDevTools} from 'redux-devtools-extension' import reducer from '../reducers' const configureStore = () => { const middleware = []; const enhancer = process.env.NODE_ENV === 'production' ? compose(applyMiddleware(...middleware)) : composeWithDevTools(applyMiddleware(...middleware)); const store = createStore(reducer, enhancer); store.dispatch({ type: 'CHANGE_NICKNAME', data: 'boogichi' }) return store; }; const wrapper = createWrapper(configureStore,{ debug: process.env.NODE_ENV === 'development' }) export default wrapper;
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
fineapple 한번에 인쇄하기
안녕하세요! fineapple 을 모두 대문자로 바꿔서 한꺼번에 인쇄하거 싶은데 왜 아래 코드는 f 만 인쇄되나요? 는 1:1 문의하기를 이용해주세요.
-
해결됨스프링 핵심 원리 - 기본편
lombok관련질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서는 lombok을 이용해서 생성자가 1개인 경우를 기준으로 간단하게 나타내는것을 알려주셨는데 시스템이 복잡하게 될 경우 생성자를 2개이상사용하게 될때도 lombok으로 간단하게 표현을 할 수가 있나요?
-
미해결JIRA를 활용해 더 효과적으로 프로젝트 협업하기
이슈에서 담당자를 여러명 지정가능한가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
general셀에서,,, 이미지 뷰 위치 질문
선생님 안녕하세요 제가 generalcell 만들 때 선생님과 똑같이 만들었는데도 빌드하면 label과 imageview가 같은 위치에 놓이게 되네요 ㅠㅠ 두가지 요소 다 오토레이아웃 에러? 빨간 선은 안뜨는데 왜 이렇게 되는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
주문 조회 V4: JPA에서 DTO 직접 조회
안녕하세요. 궁금한게 생겨서 글을 남기게 되었습니다. 페치 조인은 관련된 엔티티들을 지연로딩하지 않고 쿼리 한번에 조회하는 것으로 알고있습니다. 해당하는 부분에서 패치조인으로 데이터를 가져온 후 for 루프를 돌면서 item을 업데이트하면 에러가 발생합니다. 왜 그런지 좀 알 수 있을까요? 페치 조인은 조회만 가능하고 수정은 불가능 한 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
hierarchy창에 있는 GameObject
유니티가 실행할 때, hierarchy창에 있는 모든 GameObject에 대한 Resources.Load()와 Object.Instantiate()함수가 호출되는걸까요? Instantiate가 무거운함수라고 들었는데 혹시 hierarchy창에 직접 GameObject를 올리는게 더 효율적인가 궁금해서요!
-
미해결배달앱 클론코딩 [with React Native]
error Failed to install the app. Make sure you have the Android development environment 오류가 나서 질문드립니다
Build 단계에서 안드로이드 애뮬레이터를 제대로 인식 하지 못해서 저의 React-Native App을 제대로 설치하지 못하고 있습니다 구글링 해서 나온 솔루션대로 진행 해 봤는데 저에겐 아무런 도움이 되질 못했네요.... 제로초님 혹시 어디서부터 꼬였을지 도움을 주실 수 있으실까요??
-
미해결파이썬 무료 강의 (활용편5) - 데이터 분석 및 시각화
출산율 수 및 합계 출산율에서 외부 범례 처리
2번째 프로젝트 '출산율 수 및 합계 출산율'에서 통계 데이터 그래프의 범례 처럼 외부 범례에 그래프 라인 대신 별도 마크 표시와 파일 저장시 범례까지 같이 저장하는 방법에 대해 설명해 주시면 감사하겠습니다.
-
미해결홍정모의 따라하며 배우는 C언어 (부록)
pnode = pnode->next; 와 pnode->next = pnode;는 같은 것으로 생각해도 될까요?
예를 들어서 pnode->title과 입력받은 title의 값이 맞는지 비교하는 코드에서 while (pnode != NULL) { if (strcmp(pnode->title, title) == 0) break; //pnode->next = pnode;// pnode의 next node에다가 pnode를 대입 pnode = pnode->next;//pnode에다가 pnode의 next 노드의 주소를 대입 count++; } 이렇게 되어 있을때 pnode = pnode->next; 와 pnode->next = pnode;는 같은 기능을 하는 것으로 생각해도 될까요? 그런 것 같긴 한데 알쏭달송해서 질문해봅니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
alert창에 err가 계속 나옵니다
해당오류가 계속 뜨는데 결국 찾지 못했습니다...ㅜㅜ도와주세요... server 부터 index파일에서 선생님 코드랑 git diff찍어가며 계속 오류를 찾는중인데 해결이 되지않습니다... 다른 비슷한 질문들을 봐도 해결이 되지 않는데 도와주세요ㅜㅜ https://github.com/hyenicall/boiler-plate-ko 제 깃헙 주소입니다 감사합니다
-
미해결해커를 위한 iOS 앱 모의 해킹 전문 과정
질문드립니다
아이폰6에 ios버전 12.4.6인데 캐치딜 앱을 깔려면 ios13이상으로 업데이트 하라고 하네요. 아이폰 6가 ios13까지 지원안하는걸로 보이는데 방법이 있을까요? 아니면 캐치딜 앱 없이 진행가능한지요?
-
미해결포토샵 기본기 하루 5분, 3주 만에 끝내기
스마트오브젝트 질문
- 학습 관련5강 듣는중에 질문 드려요! 스마트 오브젝트 두번째 장점 중에서 하나의 스마트 오브젝트 설정이 다른 복사레이어에 적용이 안되는데 문제가 뭘까요? 설정을 적용하는데 있어서도 저같은 경우는 해당 페이지 창을 닫으면서(스마트 오브젝트 창에서) 저장했는데 저장하는데에 더 간단한 방법이 있는지 궁금합니다. (참고로 컴알못이라서,,자세한 설명 부탁드려요..^^) 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
user.addFollowers 질문이요
router.patch("/:userId/follow", isLoggedIn, async (req, res, next) => { // PATCH /user/1/follow try { const user = await User.findOne({ where: { id: req.params.userId } }); if (!user) { res.status(403).send("없는 사람을 팔로우하려고 하시네요?"); } await user.addFollowers(req.user.id); res.status(200).json({ UserId: parseInt(req.params.userId, 10) }); } catch (error) { console.error(error); next(error); } }); user.addFollowers(req.user.id)에서 as가 Followers고 foreignKey가 FollowingId니깐FollowingId에는 req.user.id가 들어가고 FollowerId에는 userId가 들어갈 줄 알았는데 반대로 들어가 있더군요. 동작이 어떻게 되는 지 모르겠어요.
-
미해결[입문] Qt 6 프로그래밍 1편
QT에서 리눅스 실행 파일 실행 방법 문의
안녕하십니까. 강사님 1부강의를 듣고 나름 간단한 프로그램을 만들려고 합니다. 리눅스로 이미 누군가 만들어놓은 소스파일을 이용하여 QT에서 (리눅스 환경) 에서 해당 소스를 포함하여 GUI 작업을 하려 합니다. 이때 해당 소스파일을 gcc나 다른 컴파일러로 빌드하여 아래와 같이 터미널에서 실행시키는 프로그램인데 >./test Hello World!! QT에서 해당 실행파일을 실행 시키고 그 결과로 출력되는 값을 가지고 QT의 linetext 위젯같은 곳에 출력하고자 합니다. QT에서 리눅스 실행파일을 실행시키고 해당 결과를 얻어올 수 있는 방법은 어떻게 하면 되는지 문의드립니다. 강의내용과 다소 상관없는 기술을 여쭤봐서 죄송합니다. 꾸뻑